1. Epxress от Nginx отличается главным образом тем, что первый - это сервер для Node.js приложений, а второй для Linux. Вы можете не использовать Express, или не использовать Nginx. По отдельности эти технологии так же будут работать. Чаще всего, ставят связку Nginx + Express для упрощения администрирования нескольких сайтов на одном VPS. Nginx отвечает за внешний роутинг при обращению к сайту, он передаёт запрос нужному Node.js приложению (и не обязательно это должен быть Node.js + Express). А дальше уже Express разбирается с запросом и выполняет бизнес-логику.
2. По большому счёту, в такой связке проще всего воспринимать Socket.io как расширение для Express, добавляющее поддержку сокетов. Технически, Socket.io не нуждается в Express и может работать на любом другом сервере. Но так как вы задействуете Express, запрос проходит сначала в него, а дальше управление передаётся в Socket.io. Если вас интересует более глубокое погружение - то лучше всего читать документацию Socket.io и смотреть, как работает он.
3.
https://socket.io/get-started/ https://socket.io/docs/v4/server-initialization/#w... - у Socket.io прекрасная документация, которая на примерах показывает различные варианты использования.