First, it is important to understand that every day hundreds of thousands of transactions are sent and received on the bitcoin network. These transactions need to be ordered and documented on what is called the blockchain, or the global ledger that references every bitcoin transaction ever made.  Bitcoin miners (powerful computers that connect to and make up the network) decide which transactions to include, and in what order.  This decision is based on several factors, but one of the most important is how big of a mining fee was included with a transaction.
Each time a new block of transactions is added to the blockchain, the miner(s) responsible receive new bitcoins; that’s how bitcoins are created. The miner(s) also keep all the fees attached to the transactions they included in the block, and this is an incentive to include transactions with higher fees into their blocks. At some point in time, the actual bitcoin reward will halve (approx. every four years), so transaction fees will become more important in the decision of prioritizing transactions.
Knowing how much of a fee to pay in order for a transaction to confirm as quickly as possible depends mainly on the size of your transaction.  Every bitcoin transaction is just a bit of code that has a certain size – like any file on your computer that you might email someone, or upload to a server.  The size of the transaction is not related to how much money you’re sending – but to other factors, and the larger the size of the transaction, the more space it takes up inside each block of transactions.  More space it takes, the more other transactions will be left out, as the size of a block is limited.  Hence, the bigger the transaction, the larger the fee you must pay in order to compensate for block space needed.
Once your transaction size is known, you can decide how much you want to pay per byte of your transaction.  If you’re using an online wallet such as Blockchain or Coinbase, the service uses dynamic fees to calculate an appropriate fee based on the transaction size, and the degree of traffic on the network at the time.  Here is also a link to dynamic “transactions today” chart of fees – for those of you who are far more “geeky” than me 
Transactions can be processed without fees, but trying to send free transactions can require waiting days or weeks. Although fees may increase over time, normal fees currently only cost a tiny amount. By default, all Bitcoin wallets services add what they think is an appropriate fee to your transactions; and they give you chance to review the fee before finalizing your transaction.
Transaction fees are used as a protection against users sending transactions to overload the network; and as a way to pay miners for their work helping to secure the network. The precise manner in which fees work is still being developed and will change over time. Because the fee is not related to the amount of bitcoins being sent, it may seem extremely low or unfairly high, depending on the amount of your transaction. In reality, the fee is relative to the number of bytes in the transaction. If your activity follows the pattern of conventional transactions, you won’t have to pay unusually high fees.