they both provide user info. w is described as a single command for obtaining information from several other programs (who, uptime, ps -a)
finger was written specifically to determine who was logged in and get progress and meeting information for them. It does display some of the same information as well.
Both were initially written back in the seventies (for unix EDIT: sorry, for the computers attached to arpanet, later migrated to unix
) when the paradigm was many users on one system (often via dumb terminals).
Here's a page on the history of Finger and the Finger protocol: