I imagine there is a function in Core wallet that lets you transfer funds between your own addresses with zero fee (I haven't tried it)
No i don't think core has this function because bitcoin are stored in each address in blockchain so if you need to move bitcoin from your own address to your other address it have to go through normal transaction that will cost you normal fee.
so I guess blockchain.info has a full node(wallet) and all their clients actually using one wallet is that correct?
They run several full node to push transactions but all their clients doesn't share just one wallet. All of them have their own encrypted wallet file stored separately.