1. fetch и есть ajax
2. > Как навесить событие на форму, которая загружается с сервера ассинхронно. - нужно вешать прослушку событий на элемент, в который эта форма прилетает, т.е.
<div id="with-form">
<form .../>
</div>
const form = document.getElementById('with-form');
form.addEventListener(...)
(Можешь погуглить в сторону "делегирование событий")
Это для решения которое ты хочешь.
А вообще такое поведение делается на клиентском javascript - делаешь форму с display:none, position: absolute
и по клику на, в твоем случае, "войти" - меняешь свойство display none -> block