Thank you.
So, if we assume that everything is OK with the block... then at the same time we have two blocks with the same "parent" (previous block). And possible those two branches could go like that for a couple of more blocks (the probability of that decreases exponentially). So until this situation is resolved, everything is OK... some nodes are using one branch, and some nodes are using other branch... And when the "problem" gets resolved, all of the transactions that were in the loosing chain get thrown back into the "unconfirmed" pool... where some other miner can pick them and try to include them in their block...
Yes.
Until the the problem is resolved the miner could "spend" the fee he received for including the transaction in his block. After that the block chain decides to eliminate his block (because it was in the loosing team). What happens now?
He is not receiving the reward for his block because it was discarded?
The transactions that were included in his block need to be resent (by him or some other miner).
What happens with the fee he already spent (the one he received for including the transactions in the first place)?
He can't. The maturity for the block reward is 100 blocks. The miner cannot spend any UTXO (unspent transaction output) created by the coinbase transaction until the chain is has at least 100 other blocks mined on top of that. This should counter any possible block reorgs unless it goes to 101+ and that is unlikely.
Also, I don't see why isn't it possible that two miners are trying to include the same transaction in their blocks? transaction is in the unconfirmed pool, both want to add it in their block (it is needed because the transactions in the block also have impact on calculating/mining the block), and possible both succeed at the same time... this of-course seem wrong so again, I am missing some info or got something mixed up

It is possible and probably is happening. If they mine a block at the same time, they could include the same transaction that is in their respective mempool since its not in a block already.