1. When the miner checks the transaction from Alice to Dan, will the miner actually reject this transaction (because the miner has checked the transaction from Alice to Bob before and recorded the bitcoin deduction in Alice's address) ?
Yes. When checking the validity of a particular transaction, all transactions in the block the miner is working on are taken into account. Conflicting transactions are invalid and rejected. Conversely, a chain of dependent transactions (Alice pays Bob, Bob pays Dan) within the same block is perfectly valid.
2. If, somehow, a bad block is included in the block chain, will other miners be able to pull it out later ? By saying a bad block, I meant, for example, the block contains some invalid transactions.
It will never be included in the blockchain in the first place. All other nodes will reject it immediately.