In traditional XMPP/Jabber, there are several "components" of adding a contact, partly influenced by the fact that it's designed to be a federated network (like email).
You can send any user a message by entering their ID by hand.
You can simply have someone in your buddy list, but without any additional features, just to bookmark the ID. ("Remove" deletes the bookmark, cancels the incoming presence subscription, and revokes the outgoing presence access, in one step.)
You can allow someone else to see your presence notifications – they can know whether you're online. ("Cancel presence notifications" revokes this.)
You can be subscribed to someone else's presence notifications – see when they're online. ("Unsubscribe" turns this off.)
All three options are server-side. In most chat apps, adding someone as a "contact" consists of 2, 3, and 4 together. The same applies to Google Talk, I believe – if you have someone in your contact list, that automatically lets them see when you're online, and some of these menu items won't work at all.
(Of course, in most XMPP clients, the steps are simplified into one. The menu items are there just in case someone needed more precise control.)
I'm not entirely sure whether "Block" in Pidgin is server-side or not. I think it's server-side if your server supports the feature, but not all do.