There is no minimum block size or number of transactions because the rate at which blocks are generated is determined by the difficulty and nothing else (in order to get around 6 blocks an hour) - having a minimum size would have broken bitcoin early on when there weren't many transactions going around.
I agree with you, that this was a good idea for bootstrapping the system. But is it still a good idea to allow empty blocks now?
Also, there is no way of knowing if the next block will be solved in 0.00001 seconds after the previous one (e.g. someone is very lucky)
I know what you mean, but 0.0001 seconds seems very unlikely to me, because you have to learn about the previous block, first (I assume that you meant, that the second block is built on the first one, here). Still it would be
theoretically possible, if you solved the previous block yourself.
and we wouldn't want the protocol to break just because of edge cases like this.
Do you think, that e.g. a requirement to include 10 transactions or some KB of transaction data would break the protocol today? And if yes, how?