I want to update the corresponding fields (i.e. first name, last name) of a wordpress user every time the linked contact is changed either on the frontend or the admin area. I saw in the CiviCRM admin area the same field can be changed in quite few places so is there a hook or something that can be used?
I believe you are looking for something like this:
The CiviCRM WordPress Profile Sync plugin keeps the "First Name", "Last Name", "Email Address" and "Website" fields of a WordPress (and BuddyPress) user profile in sync with the corresponding fields of a CiviCRM contact. The synchronisation takes place regardless of whether the changes are made in WordPress, BuddyPress or CiviCRM.
I guess you could extend that plugin if you want to include CiviCRM custom fileds.
Hope that helps.