- Can I just add a license after the fact and it will be valid for all prior work?
This is fun question because it hinges on a silly technicality of software development. If you add a license to your repo today, the license applies to the code as of that point in the commit history.
I think you are getting a bit too caught up at the process of adding a LICENCE file to a repo. This is just one way to licence some work. You can just say "I as the copyright owner of this work licence it, including all previous revisions under licence X". That is also licensing the code and doesn't matter if the LICENCE file exists at any particular commit.
But yes, I would say that by default adding a LICENCE file would be interpreted just as releasing that version of the code under the particular licence.
I don't think this is really true. If you own the code you can licence it as many times and in as many ways as you want. You just say that you are licensing existing versions and it becomes true. Probably a good idea to write that down somewhere (maybe in the LICENSE file) to make a "paper trail" in case you ever need to document this license.
You generally can't retroactively change a license, such as revoking it. But licences may have revocation terms. But it doesn't really matter what existing licences are on a code, you can always add new licences if you own it.
A silly example. If I own some code I can say "Anyone standing on their left foot can use this code". That doesn't stop me from later saying "Anyone standing on their right foot can use this code". But licenses are still valid, and I haven't change the first one. But now people can choose which license they would like to use.