setTimeout ставит переданный callback в очередь событий даже, даже если указана задержка 0 (или не указана вообще), что гарантирует что этот callback выполниться после перерендеринга страницы - в данном случае это необходимо чтобы сначала отрисовался круг с нулевым радиусом, и тут же - с радиусом 200. то что это происходит не мгновенно - из за установленной длительности css анимации в 2 сек (setTimeout тут не причём).
Но без setTimeout радиус будет установлен в 0, затем сразу же в 200, а только потом будет рендеринг - и css анимация не сработает.
https://habr.com/ru/company/hexlet/blog/656003/