If the sender, recipient, and amount is all obfuscated, how can people on the network trust that people are not trading coins they don't have.
All tokens are accounted for at all times. The protocol keeps track of the tokens (this is how we can verify the total supply). The system just scrambles the outputs so that there is not external way of determining which tokens are spendable from the same wallet.
All that happens is that the password-to-spend for a given token set (called a TXO, for transaction output) changes. Due to the maths of one-way algorithms, you can't tell who holds the underlying key that unifies the spend authority for two separate TXOs on the ledger.
Imagine that each wallet comes with a huge set of physical keys attached to a big key ring. Now imagine each TXO has a physical lock on it. Just by looking at two TXO locks, you can't tell whether the can be unlocked (spent) by keys that belong to the same key chain. When you give someone a subaddress, you provide them with a lock mold, which they can use to relock their TXO with a lock that can be opened with one of your keys. The analogy is not perfect, but I hope it helps make sense of what the core of the obfuscation is. TXOs just get assigned new locks, but the total is always accounted for.