Source control (Git in this case, but there are other systems) is used to track and preserve history of source code changes over time.
Pro Git Book
A package manager (NPM in this case, but there are others like nuget), help one manage and include third party libraries into ones code. In the case of NPM specifically, it also may contain scripts or configuration that declares information about your project, like name, version, description, and where, online, your code is hosted (i.e. its source control).
About NPM
So to answer your question about when they should be used:
- Git should generally be used for most projects
- NPM should be used when you need to include third party libraries you want to use from the NPM repository.