The memory pool is not consistent among nodes, and nodes are free to drop or ignore transactions as they see fit. As you say, nodes may have conflicting transactions, a.k.a. double spends. Transactions are not durable in a meaningful way until they have been included in a block.
Waiting for six confirmations is probably enough to prevent accidental reversions, but takes on average an hour, with a fair amount of variance.
Waiting for six confirmations is probably enough to prevent accidental reversions, but takes on average an hour, with a fair amount of variance.