I want to start buying some coins (btc, eth, altcoins...) but when looking at the exchanges like bitfinex, bitmex... they all charge some non neglectable fees to deposit USD or coins.
So my question is: is there a way to avoid all these fees ?
You can still buy coins "off exchanges" but you then lose the escrow service provided by it. (having a trusted third party handling the transaction for you).
Is it better to deposit cash on an exchange and buy coins directly on the exchange? Or buy coins and then transfer them to the exchange (I saw bitfinex charges had deposits but not btc deposits for example)
Also if I create an account on different exchanges, do I need to create a wallet for each one or can I use the same wallet on different places ?
It's ALWAYS better to keep your coins out of the exchange. "Not your private key, not your coin".
Obviously, you can manage all your coin on one wallet. Just transfer your coin to one of the addresses provided by your wallet.
Also, if your plan is to do some day trading, of course, keep what you need on the platform. Just keep in mind that any third party holding your money may shutdown without prior notice.