Сейчас вы не отменяете действие по умолчанию у ссылки, так что всё равно происходит переход по ссылке href="#", что и вызывает скролл в начало страницы.
Ну а совсем по хорошему, надо бы использовать нормальную кнопку и слушать событие submit у формы.
Нода однопоточная, но setTimeout не блокирует поток. Вот если вы все эти четыре секунды будете что-нибудь в этом потоке считать, тогда Нода не сможет ответить на другой запрос, потому что будет занята.
Подтверждение email адреса обычно заключается в отправке на этот самый адрес письма со ссылкой и обработкой перехода по этой ссылке на сервере. Реакт тут вообще никаким боком не прикладывается.
Не используй. fetch его сам использует если надо.
У него есть какие-то полезные методы если у тебя не совсем тривиальные заголовки.
Но в целом в JS много конструкторов которые не предназначены для частого использования конечными разработчиками, но нужны для внутренних нужд. Тот же Number или String, например
Оператор new можно использовать почти с любыми функциями, если это явно не запрещено (например нельзя со стрелочными). Promise.all это функция, так что никакой проблемы вызвать его с оператором new нет. Смысла правда тоже нет.