Но в таком случае абсолютно не понимаю как мне отправлять начальный html "набор" из ссылок на css и js файлы и скелета сайта.
nodejs прекрасно работает в качестве движка для обычных сайтов.
app.get('/', (req, res) => res.send('./index.html'))
Ну разве что для скорости стоит раздавать статику nginx'ом.
Если речь о серверном рендеринге React'а, то смотрите соответствующую документацию.
Не понимаю как стоит организовать авторизацию пользователей и взаимодействие с базой данных.
sequilize.js или Mongoose, Passport.js для авторизации
Не будет ли проблем с ассинхронностью nodejs?
Если вы понимаете, как JS устроен, то нет.
Как структурировать код nodejs сервера? Есть ли какие-то фреймворки для таких задач?
express.js/koa, kraken.js, sails.js. express никакой структуры не предусматривает, так что ищите бойлерплейты.