"Confirmations" are blocks that lock a transaction into the public hash chain. The more confirmations a transaction has, the more computational effort would be needed to undo that transaction by a double-spend attack.
If I have 10 bitcoins, I have to be able to send 10 bitcoins to Jeff or I have to be able to send 10 bitcoins to Mark. But I must not be able to do both. The way bitcoin handles this is by having a public hash chain that includes all valid transactions in it. If I send 10 bitcoins to Jeff, that transaction will be in the public hash chain and so long as it is, no transaction for those same 10 bitcoins from me to Mark will be valid.
The problem occurs when someone presents two hash chains, one containing the transfer to Mark and one containing the transfer to Jeff. (Which could only happen if I created both transactions, which means that I must be attempting a double-spend attack.) The community will accept the longer chain. So if you want to launch a double-spend attack, you must produce a longer chain than the public chain containing the transaction you wish to invalidate. 'Confirmations' are blocks in the public chain that includes the transaction that occur after the transaction. They serve to make the double-spend attack computationally infeasible.