Why do we need to wait for such a long time when receiving monero? I thought it was 2 minutes only, but it seems that is not the case and I have to wait still a good 5+ minutes for a transaction to confirm.
It's up to you, depending on how risk averse you are.
You can act upon transactions as soon as you see them in the txpool (if you do, it means they're valid, but not mined yet, but they're still fairly easy to get to never be mined by double spending them). It gives very good user friendliness though, and many businesses tend to accept those for low value transactions.
You can act upon transactions as soon as they get included in the blockchain.
You can act upon transactions once N blocks have been mined over the block the transaction is in. The higher N is, the less likely a reorganization will cause the transaction to be removed from the blockchain.
In the end, if comes down to a risk calculation, which is something you have to decide. There is no amount of time you can wait which will make the transaction 100% final, due to how the PoW system works. The finality probability just increases fast with confirmations, but never reaches 100%.
To answer your point about time: finding blocks is an inherently stochastic process. The network manages difficulty to aim at a 2 minute per block average rate, but since finding blocks is a "chance" based system, you won't get blocks on a perfect 2 minute schedule. You can see it as a "when do I get a 6" when rolling dice: on average, you get a 6 every 6th roll, but you don't get a 6 every 6th roll like clockwork. It's an average you tend to as you roll more and more.
Additionally, when the txpool is filled, it may take time for a transaction to get included in a block, even when blocks are being found: since miners include transactions with a better paying fee first, if there are too many transactions available that can fit in next block, a transaction may linger in the txpool for longer than it takes for the next block or next few blocks to be mined. This is one of the dangers of acting upon unconfirmed transactions that you have to consider as a business decision. Be safe, or offer your customer fast service.
If you're not a business making this decision, but just wondering when you're going to receive your monero you withdrew from a business, and you're just waiting for the "received..." line in monero-wallet-cli, not that the wallet sees when you received a transaction but will only tell you about it when it gets mined. If you want to see whether you've got monero incoming before it gets mined, you can use:
This will show any incoming monero before it gets mined.
Seeing as you mixed two concepts in your question, receiving and full confirmation...
Just like practically every other cryptocurrency, two things happen when you send money: 1) the transaction gets broadcast and placed in a transaction pool. Your wallet sees (receives) this almost straight away, but it is locked until 2) it is mined in a block and then N subsequent blocks have been mined afterwards. In Monero's case, wallets keep the funds locked for N=10 blocks (which is roughly 20 minutes).
Cryptocurrencies do this locking / confirmation wait because of a few reasons, mostly to avoid double spends (whether intentional or accidental), but also because of the possibility of orphaned blocks.
With this knowledge,
Why do we need to wait for such a long time when receiving monero?
You don't. Your wallet receives / sees the transaction almost instantly.
I thought it was 2 minutes only, but it seems that is not the case and I have to wait still a good 5+ minutes for a transaction to confirm.
You thought wrong. For the transaction to be fully confirmed (unlocked) by your wallet, it takes 10 blocks (roughly 20 minutes). For comparison, Bitcoin aims for a 10 minute confirmation / unlock time.
Lastly, it's worth noting, there is nothing at the consensus level enforcing an N blocks lock time. The wallets / merchants implement this. Some wallets / merchants accept a lower block confirmation (even zero in some cases), but that's a risk they are willing to take (a risk they never get to use the funds because of a double spend for example).
UPDATE (for v0.15+)
The 10 block lock time is now enforced by the protocol (consensus). Therefore it is now only possible to spend funds with at least 10 blocks of age.