The main idea of the tangle is the following: to issue a transaction, users must
work to approve other transactions. Therefore, users who issue a transaction are
contributing to the network’s security. It is assumed that the nodes check if the
approved transactions are not conflicting. If a node finds that a transaction is in
conflict with the tangle history, the node will not approve the conflicting transaction
in either a direct or indirect manner³.
Transactions are conflicting if they try to spend the same money from the same address (and the address does not include enough money to satisfy both at the same time - but this should not happen anyway, as compliant clients will move the remaining balance to a change address - but can of course happen if an adversary tries this).
Either this can be because there is a real double spend (e. g. somebody tried to send the same funds to two different addresses) or in case somebody reattaches their transactions (only one of the transfers can confirm then).