Each block validates the block behind it, so if you've got 0 confirmations it means your transaction hasn't made it into a block yet. If you've got 1 confirmation it means your transaction is in the most recent block. If you've got 2 transactions it means that after your transaction made it into a block, another block was found that signed off on the block containing your transaction. At 3 transactions, the most recent block has signed off on the block before it, which in turn has signed off on the block before it, which contains your transaction and so on.
This is important because once a newer block has signed off on the block before it, you can't change that old block without invalidating every block after it. If I want to rewrite the most recent block it's astronomically difficult, but still technically possible, to do so. The deeper each block is buried in the chain, the more blocks I would have to rewrite history on to undo transactions in that block.
To my knowledge no one has ever successfully re-written history and the amount of processing power required to do so is beyond astronomical at this point. This is also why the standard client does not consider transactions to be "confirmed" until it's 6 blocks deep - that's the point at which the likelihood of rewriting history becomes so low that it's effectively zero.