c'est un gestionaire de dependance, qui vas faire le travail pour toi. Par exemple, quand tu veut installer mocha jasmine et chai pour tester ton application normalement tu vas sur les site respectif, tu les télécharge tu les copie colle dans ton projet et tu les link dans ton code, ben la tu fait un npm install jasmine mocha chai et op tous est fait pour toi.
Cela te permet aussi de créer tes propres modules, de le distribuer.
ca te permet aussi de versionner le package.json et de mettre dans le gitignore le dossier des modules pour partager avec d'autre developpeur