Transaction fees when a block chain is discarded
The blocks on the chain that loses are essentially forgotten. (It's better to call them losing blocks, than "bad" blocks, because they were legal and offered in good faith. They just lost a network race.) 

Thus on the winning chain, there's no record of the losing-block reward, or the transaction fees. If there's no record of it in the common history, you don't have it. It's as if the reward and fees on the losing branch never happened. 

Many transactions likely already existed in both blocks. (Most redundant blocks happen by accident, and can already contain most of the same transactions.) Despite these transactions, with their fees, appearing in two places for a time window of uncertainty, since only one set of consistent blocks will eventually win, those fees are only meaningfully spent, and then re-spendable, in the winning chain. 

Any transactions missing from the winning chain are still eligible for inclusion, as long as they're still consistent with the cemented-history. Anyone building on the winning chain, who still knows about the unverified transactions, might add them on a subsequent block. Anyone interested in ensuring they're still widely-known may continue to broadcast them to peers.