ERC20 is a standardized software interface for tokens. A software interface is a standard that allows two different pieces of software to interact. For example, USB mice have a common interface so you can plug any mouse supporting the USB mouse standard into a computer running an OS that knows how to support USB mice. Likewise, wallets that support ERC20 will know how to deal with any ERC20-compliant token. In fact, this interoperability is the whole point of creating the ERC20 standard! For any ERC20 token-supporting wallet, I believe you need to tell the software to watch the token's contract address, but that's about it, unless the wallet specifically only hard-codes in an approved list of tokens.
However, an exchange can choose not to list your token (or, more precisely, it choses tokens that it wants to list), but that has nothing to do with wallet support in the case of ERC20.
If you created a non-ERC20-compliant token on the Ethereum blockchain, you'd have to create your own wallet if you wanted users to have a nice user interface to interact with your tokens. If you created a new cryptocurrency (like when Litecoin forked from Bitcoin), you'd have to create a new wallet so that people could sync your blockchain.