Why does it cost money to transfer bitcoin? Noob question here.

Why are there transaction fee when transferring bitcoins and who charges them? Being decentralized does not imply that anyone is able to join?
The transaction (tx) fee is the difference in value between you tx input(s) and your tx output(s). The fee is to incentivise miners to include your tx in a block. Until your tx is included in a block it's not part of the blockchain and the recipient will most likely not acknowledge the payment. 

When you see your tx as pending it means it's been added to the mempool but has not yet been added to a block. When you see your tx displayed as 1,2,3 etc. confirmations that means it was included in the block mined 3,2,1 blocks ago (blocks are mined on average every 10 minutes).

You can create a tx with 0 fees and in the past they may have been picked up by a miner. These days with the high tx volume (currently there are 10k outstanding in the mempool) a 0 fee tx would almost never get added (unless a miner had another non-economic motive).

I was able to confirm a tx with a fee of 0.00000226 BTC on the 24 Sep 2017. To do that I was literally watching the mempool and picked a time when it was nearly empty. Currently my Bitcoin-Core wallet is recommending a fee of 0.002 BTC/kB which would work out to a fee of 0.0005 for a typical tx.