I know that selecting transactions with confirmations first are much better than spending transactions with 0 confirmations direct.
But why is that?
Many wallet implementations prefer spending confirmed inputs over unconfirmed inputs. There are multiple reasons for this preference:
Bitcoin Core (and perhaps other software as well) does not propagate chains of unconfirmed transactions beyond a certain depth. If you continuously reuse unconfirmed UTXOs, eventually your transactions will not be seen on the network until some predecessors confirm.
Transactions using unconfirmed inputs are susceptible to become invalid due to a parent transaction being replaced or doublespent.
A transaction building on top of an unconfirmed change cannot be confirmed until the parent transaction is confirmed. This dependency is used by child-pays-for-parent transactions positively to increase the priority of the parent transaction, but can also be a handicap, when a low fee transaction essentially puts the onus on the recipient to bump the transaction in order to gain access to their funds.
If you spend zero conf transactions, the spend will not confirm until the transaction they source confirms. You can end up with a chain of transactions all waiting for the first one to confirm. Computers are ok with this, but people get confused. :)