How can I give a nickname to an NPC?

Using commands (cheats) you can get a name above the villager doing the following:

  1. Get a Villager Spawn Egg (/gamemode 1 and locate to the Miscellaneous section.)
  2. Rename the spawn egg using an anvil and some experience.

Naming the Egg

Now just spawn the villager using the egg.

Spawned Villager

You'll only see the name when you look at the mob.

Now if you don't get the Villager you want, just keep trying until you get the villager you want, while killing the extras off.

I kill them with Lava. Mwahaha

If you wait until 1.6, you can do this without cheating by using the Name Tag for other creatures other than the villager. They can be crafted and by using an Anvil, you can rename the tag. Then find a mob and build-click on it. Now you have a name above the mob. The downside is you cannot name villagers with this item, however that appears to be a snapshot bug (reported as a bug #MC-14525 on Mojira).

To answer the other part of your question, you can't give villagers any items, you can only trade with them.


Using MCEdit

You can give a nameplate to mobs by using Sethbling's ChangeMobs filter: select a mob, type the desired name into Name and select Show Name.

You can give custom drops to mobs by using Sethbling's CreateGearedMobs filter: put items that you want the mob to drop in a chest, run the filter on the chest and select which mob you would like.