I'm new into ERC-20 tokens. Let's say I buy an ERC-20 token in an exchange with USD. When I want to transfer that token to my own external wallet (say Nano S), do I need some ETH in the exchange (source) to pay for gas fee? Does the exchange actually have a wallet for me and send the token from my exchange wallet to my external wallet?
Transactions from an exchange are usually sent from a "hot wallet", basically a wallet that is managed by the exchange. Most of the time exchanges pay for the gas, so you don't need any ETH in the exchange to withdraw tokens.
In the case of a decentralised exchange (DEX), you do need some ETH, since those kinds of exchanges are based on a smart contract.