A token transfer that returns nothing can still have moved your money. And a transfer that returns true can still have moved less than you asked for.
ERC-20 is a standard the way a handshake is a standard. Plenty of deployed contracts leave out the boolean return, so a strict integration reverts on a transfer that actually went through. Some refuse an allowance increase unless you set it to zero first, so your approve call fails against a balance that is sitting right there. Some take a fee out of the transfer, so the amount you credited internally is bigger than the amount that arrived.
Each one breaks a different layer. The first breaks your call site. The second breaks your onboarding flow. The third breaks your ledger quietly, and that is the one you find weeks later during reconciliation.
The habit that survives all three: don't trust the return value as evidence of the effect. Read the recipient balance before, read it after, credit the difference. The transfer is a request, the balance delta is the fact.
I wrote it up properly here: https://polycratia.com/c/047ca8ee
The missing return, the approve reset, the fee on transfer: you have probably met at least one of them in production...