Tokens and coins are never in your wallet, they are on the blockchain. Your wallet is basically just where you store your keys. Technically these tokens are locked in the zkSync smart contract on the ethereum blockchain(L1) and registered to your keys. This is your proof on the ethereum blockchain that you own these tokens. While they are locked there, you can do what you want with them on the zkSync side chain (L2). Of course on L1 that is not the same as actually having the tokens. There may be wallet software that can read that smart contract and also displays tokens in the zkSync smart contract.
You can do that either on zkSync, which would be very cheap in transaction costs or if you want to send them to another wallet on L1 you can withdraw to that wallet. But at that point your transaction costs will be similar to transferring tokens on Ethereum. Slightly, but negligibly higher actually.
No, I used the exchange as an example for when you want to withdraw L2 tokens to another address on L1. You never HAVE to use an exchange if you don’t want to.