Simply, we can say that git pull does a git fetch followed by a git merge.
You can freely perform git fetch at any time to update your remote-tracking branches under refs/remotes/<remote>/.
This operation never changes any of your local branches under refs/heads and is safe to do without changing your working copy. I have even heard of people running git fetch periodically in a cron job in the background (although I wouldn't recommend doing this).
In order to bring a local branch up-to-date with its remote version, you need to perform a git pull. Simultaneously, it will also update your other remote-tracking branches.
Git documentation – git pull:
P.S. - In its default mode, git pull is shorthand for git fetches followed by git merge FETCH_HEAD.