Асинхронность помогает единственному основному потоку не висеть в ожидании завершения какой-либо длительной внешней, по отношению к потоку, операции или наступления некоего события.
Представьте, что у вас всё работает синхронно. Тогда, если вы в фоне подгружаете какие-либо данные, то основной поток будет ждать завершения их загрузки и браузер перестанет реагировать на любые действия пользователя - нажатия на клавиши, движения мыши и т.п.
При асинхронности есть некая очередь. Любое событие (нажатие клавиши, движение мыши, скролл, завершение сетевой операции, срабатывание таймера) добавляет в эту очередь новую задачу. Браузер берёт задачи из этой очереди и выполняет их в единственном потоке. Эти задачи могут порождать процессы во вспомогательных потоках (инициация таймера, запуск сетевого процесса), которые в конце работы добавят новые задачи в очередь.
И таки да, если из задачи запустить несколько сетевых операций подряд, то они будут работать одновременно во вспомогательных потоках, при этом каждая такая операция при своём завершении добавит новую задачу в очередь. То же самое и с таймерами, все таймеры ведут отсчёт одновременно, добавляя задачи в очередь по истечению заданного времени.
Аналогия: представьте, что вы начальник и к вам стоит очередь подчинённых. Каждому из них вы даёте задание и он уходит это задание выполнять.
Синхронный процесс - вы ожидаете возвращения подчинённого и его доклада о выполнении задачи, затем даёте ему новое задание и так, пока задания для него не закончатся. Потом переходите к следующему подчинённому.
Асинхронный - вы даёте задачу, подчинённый уходит, вы даёте задание следующему и т.д. По выполнению задачи вернувшийся подчинённый встаёт в общую очередь к вам.