How do forks happen/ how is the block that will separate the two new blockchains chosen?
Ethereum's average block time is currently around 14 seconds. With lower block times there is a greater chance that two (or more) miners will find a solution to a given block's Proof of Work at the same time. The consensus rules mean that one of these two (or more) blocks will eventually be considered the correct one, but until that time a different chain can grow from each of the blocks.
This is a "naturally" occurring event that happens many times a day, and is why Ethereum has the idea of uncles, which help incorporate transactions from whichever chain is eventually considered invalid.
If ETH gets forked at block 99 I would have my 1 ETH back and I could
spend it again. I guess this would be double-spending and this is not
how forks work.
Natural forks usually occur at the chain head, on the latest block. If your transaction was incorporated in block 100, and there were multiple blocks built on top of block 100, then it's unlikely that a "natural" fork event could happen on block 99. (A couple of caveats that I [and @lungj] can think of: a) if the network had been partitioned somehow at block 99, and then reconnected later, b) if you start mining before completely syncing the chain data.)
Perhaps more likely would be an attack, whereby an attacking miner deliberately chose to fork from block 99 in an effort to double spent funds from later blocks. To do this they'd need enough hashing power to create a fork longer1 than the fork that everyone else considers correct. This is what would be considered a 51% attack.
1 By "longer" we really mean with a greater cumulative difficulty.