NPM is is a package manager for NodeJS. It installs packages so that they can be used with Node applications using the Node require() keyword. NPM uses a repository of NPM packages, similar to the NuGet Gallery package repository.
Bower, on the other hand, calls itself “A package manager for the web”. Bower installs front-end frameworks for your website. Bower doesn’t have a repository and can grab packages from many places, most notably straight from GitHub!