(1) If I want to pay John 1.00 BTC, do I have to pay transaction fees to miners?
It depends upon the circumstances. If you received that 1BTC in a single transaction more than a day ago, most likely there will be no transaction fee.
(2) Is there a fixed amount of fees per transaction?
No, it's based upon the 'size' of the transaction. If the transaction has to gather a large number of coins from many other transactions or distribute coins to many different destinations, that will affect the fee.
(3) I had 0.01 BTC in instawallet which I transfered to my personal MacBook. The transaction was free. I tried transferring the 0.01 BTC from my MacBook back to Instawallet and the app says "over the limit...would you like to pay ~0.0005 BTC as fees?" Why was it free one way and costs the other way?
Probably a variety of reasons. Most likely, instawallet was sending you old coins, you were sending new (recently sent) coins. You probably could have sent your transaction with no fees once the coins were a day old.