Роутинг на JS. Это легально?
Вечер добрый.
Вы не тупой, в ангуляре существует модуль роутинга.
Да, ангуляр сам получает событие изменения  адресной строки, и, согласно вашему коду, на него реагирует.
Ответы:
1. Да, сервер, в случае SPA просто отдает данные из БД   а если роут ему неизвестен - просто отдаст index.html, в котором будет бандл angular (или React) приложения, которое развернется и проверит, что написано в адресной строке, может ли это приложение обработать этот запрос. Все таки изначально, при первом запросе url идет до бэкэнда.
2. Ну, если вы не хотите использовать  Angular - да, такой подход имеет место быть, вопрос только зачем - современные фреймверки позволяют без боли создавать приложения. не нравится ангуляр - пробуйте React или Vue.
3. Да, ангуляр, как и реакт - для SPA. Не отвечу точно про ВК, судя по всему да, или использует много элементов оттуда.
4. Да, дает, ваш бэкэнд в данном случае (в случае православного простого SPA) превращается в обертку для БД (очень условно, тапками не кидайте, всякое бывает, я знаю).
Если интересно  мой вариант роутинга в  115 строк   es6 синтаксис