this involves a centralised service to be trusted to hold a database linking the two.
the decentralised solution is to make a private key/public key. put funds into it, then email your friend with the private key/public key info and have instructions on how he can add it to a wallet.
i do this all the time.
EG:
Hi X,
i thought i would send you your first bitcoin, to use it you need to input the privatekey into a bitcoin wallet. here is a link to a few wallets and each of them have a easy way to input the private key
bitcoin-qt link
blockchain.info link
now here is the private key(do not disclose to anyone):
Al0ngA55edAm0unt0fCharacter5Usuallyg0e5here
if you want to see the balance right now:
blockchain.info/address/ blah
and here is the public address (which you give out to allow people to pay you):
Al0ngA55edAm0unt0fCharacter5Usuallyg0e5here
if you have any questions feel free to contact me
as for later on sending transactions to someone you know. you can always put their email or even just a name as the label of their bitcoin address in your client. then you can simply send to the lable name