With the recent "security breach" at NiceHash, I can't stress it enough:
STORE THE BULK OF YOUR CRYPTO CURRENCIES OFFLINE IN A HARDWARE WALLET.
If you don't control your keys, your coins are at risk!
For all of you newcomers to Bitcoin, I wanted to share my flow so you can understand how to protect your crypto currency.
I personally use GDAX (https://www.gdax.com) as my exchange of choice, but I do not store many coins with them. I have a policy, that if my exchange wallet funds top $2000 USD, I transfer them to an offline hardware wallet.
My hardware wallet of choice is the Ledger Nano S (LNS) (https://www.ledgerwallet.com/products/ledger-nano-s). For those of you that are considering a LNS, when setting it up, I urge you to test your seed prior to any major coin transfer. When I originally purchased the LNS, I set it up and recorded my 24 word seed. I then moved a small amount (~5 USD) of coin to the LNS. Once it was completely received and verified, I reset the device and rebuilt it using the seed words. I am glad I did this, because the first time I did it, the seed I recorded was wrong. Luckily, I only lost ~5 USD. The second time, it worked and I was able to fully restore the device.
I would also encourage you to memorize your seed or at least store the hand written record of it in a safe or safety deposit box as anyone with the seed can access your funds. Never enter your seed words into a internet connected device. Even just typing it into a text editor to print it off is bad because someone could be monitoring your devices keystrokes. I would also highly recommend setting a pin on your LNS to protect it in the case it is stolen.
If the LNS is ever stolen or lost, your funds can be restored as long as you have a pin setup (to keep people out of the old device) and you know your seed words.
This is my approach. Some might call me a bit over the top or paranoid, but it is news like the NiceHash "security breach" that makes me appreciate the approach I have put in place.