Note that the word "fork" can have several meanings. The more common one is a protocol change (either a soft or hard fork) where everyone switches to the new protocol. In this case there will still be only one type of coin.
You are talking specifically about a scenario where both the new and old versions are being used. In this case the network and the currency will split into two separate networks, blockchains and currencies. I will refer to such a scenario as a "split".
In essence, if the split is done properly, then the two networks will be incompatible and not recognize each other. Each will believe it is the one true coin, and will treat any transaction on the other network as invalid garbage.
The two networks do share a common blockchain history up to the point where the split happened. So if you have a bitcoin in address X in cold storage prior to the split, each network will recognize that there is a bitcoin in address X, so you will indeed have a coin of type A and a coin of type B. If there are several splits while the coin remains in the same address, you will have a coin in each of the resulting currencies.
You can "see the new coin" the moment there are block explorers for both networks. You can examine the block explorer for network A and see that you have a bitcoin, and you can examine the block explorer for network B and see that you have a bitcoin. Once you've installed wallet software for both network types, you can import your private key to both and have each display that you have 1 bitcoin.
This means that you are now able to create two transactions - one that sends a bitcoin to an address C of your choosing, which will be recognized as valid by network A; and one that sends a bitcoin to an address D of your choosing, which will be recognized as valid by network B. (This requires that there will actually be software available for both networks A and B, and that it will be careful not to create transactions that might be mistakenly picked up by the wrong network).
What happens next involves interaction with the real world, and the real world is messy. There's no absolute answer to what will happen as it depends on what kind of software and services you are using.
If you "have 1 bitcoin in an exchange", remember that you do not really have a bitcoin, the exchange has a bitcoin and is contractually obligated to give you 1 bitcoin when you demand it. This becomes messy when a split happens and it's not universally agreed what "bitcoin" means.
The exchange will, technically, definitely now have both a bitcoin A and a bitcoin B. What will it do about its contractual obligation is up to it. The exchange could treat both coins as legitimate, support balances of both Bitcoin A and Bitcoin B (the same way it has balances of any other currency), and credit you with 1 bitcoin in both (since your pre-split bitcoin really is equivalent to a bitcoin on both). Then you can either withdraw both, sell both or any other combination.
Or it could decide that only one of the coin types is legitimate. So it will run only nodes of Bitcoin A, recognize only transactions of Bitcoin A, and list a balance only for Bitcoin A (which it will just call "Bitcoin"). When you ask to withdraw your bitcoin, it will send you only a bitcoin A. It is technically capable of sending a bitcoin B as well but it ignores this possibility. The bitcoin B will probably be lost (or at least kept by the exchange).
So, it's in your best interest to keep your coins only in exchanges / hosted wallets that recognize the importance of handling splits properly. (Or, preferably, not keeping your coins in exchanges or hosted wallets at all).
I've analyzed the contingency of a split in more depth at https://fieryspinningsword.com/2015/08/25/how-i-learned-to-stop-worrying-and-love-the-fork/.