Чем описывать тут своими словами лучше дать ссыль на хороший, годный доклад
https://habr.com/ru/company/oleg-bunin/blog/417461/
Макро и микрозадач нет, есть tasks и jobs (иногда таки называют микротасками). Tasks выполняются в цикле, по мере появления в коллстэке (это xhr, fetch, setTimeout, browser events), а jobs (Promise, Mutation observer) сразу после тасков в текущем цикле, причем если job был добавлен в этом цикле (в task или в job перед ним), то и выполнен он будет в этом же цикле, в отличие от таска. Это позволяет выполнить промис-цепочку почти синхронно, но добавляет опасность заблочить цикл.
В ноде все это работает по-другому.
Ну и евент луп не относится к javascript, а определяется окружением, в нашем случае - браузером.