1) При чем здесь NPM? На кой черт он сдался Node'у? И как он перекочевал во фронтенд? Это просто интересная фича Node, которую начали использовать фронтендеры, а bower развивался параллельно?
Это пакетный менеджер, чтобы распространять пакеты централизованно, а не искать по всем закоулкам интернета. К этому пришли/придут все языки/среды разработки. У c# есть nuget, у php - composer...
3) Зачем мне (буду говорить просто) на "сайте" какой-то файл package.json, lock.json? И вообще, зачем мне какие-то зависимости? Установка - да, удобно. Но ведь все условно плагины (галерейки, jquery и пр., и пр.) являются частью сайта и друг от друга не зависят обычно.
все условно плагины
Это хорошо, если написанный Вами код использует только зависимости первого уровня вложенности. В проектах бОльшего масштаба, вложенность зависимостей может достигнуть и 3 и 5 уровней. Это когда используемый Вами пакет зависит еще от трех пакетов, каждый из которых, в свою очередь, зависит еще от нескольких, каждый из которых может принести еще несколько зависимостей... Соберете руками?
Максимум - плагин jquery зависит от самой jquery.
Это в Вашем кейсе так. Но не значит, что у всех поголовно.
Надо передать среду разработки - отдаю vagrantfile
vagrant - сторонняя зависимость.
Вы не смотрите, что Node.js - весь такой из себя сервер. Это в первую очередь тулчейн для разработки, а потом уже интерпретатор js. Ибо исторически, до появления node, сама только мысль о js на сервер-сайде вызывала эмоции вида "WTF? O_o Seriously?" и "LOL xD". Потому node.js релизился именно как готовый тулчейн для разработки поверх интерпретатора js. То, что над репозиторием npm появились другие менеджеры - это работа сообщества. Чем они лучше/хуже и в каких кейсах - думаю, практикующие люди вам ответят сегодня. Хотя, скорее всего отправят в поиск.