Так а что о подробностях
Первым делом нужно написать сервис, который работает с данными, получает информацию о структуре опроса и шлёт результат прохождения опроса, вообще можно конечно и на два сервиса разбить, семантически они разным же занимаются.
После получения структуры опроса — создаём реактивную форму на основе эти данных, создаём контролы в форме, рендерим под всё это дело вёрстку, вопросы, поля для ввода, чекбоксы, радиобаттоны, всё что нужно в вопросе. Гуглим, как работает валидация реактивных форм.
И вуа-ля, поставленная задача выполнена.