Why do testnet blocks have future timestamp? I am playing experiments with testnet blockchain, and it seems like the best block is always set about 2 hours into the future.

For example, now, the block has timestamp 90 minutes into the future. I am not linking the block itself since it will be quickly outdated anyway, but you can look at https://testnet.blockexplorer.com and the newest block will always be into the future.

How is that possible? Shoudln't the network check the timestamps, if they are sensible? Also, if anyone can fake the timestamps, do they have any reason to exist at all?

This extends both to mainnet and testnet; however, I haven't seen it happen on mainnet. Why?
Testnet is frequently attacked, abused, due to the complete lack of value and proof of work. A piece of code which is intended to allow a difficulty 1 block is none has been found in 20 minutes also enables a person to "warp" forward and mine multiple in a row. If this is exploited over the difficulty adjustment, the entire chain difficulty is reset to difficulty 1. 

The result is that it is trivial to make forks hundreds of thousands of blocks long, with insane timestamps that only vaguely match reality within the consensus rules. They're never going to make a lot of sense as a result. This doesn't happen on mainnet because the difficulty reset code doesn't exist there.