IntersectionObserver используется не только для lazy load, в основном это api избавляет от ресурсоемкого события scroll. А использовать ту или иную технологию зависит от тз, а не от мнения разработчиков. Если можно не поддерживать ie то и IntersectionObserver можно использовать.
JS для детей - поможет усвоить лучше то, что проходили в htmlacademy (сам заканчивал ур1), Выразительный js - хорошее описание ES6 интересные и относительно сложные упражнения. серия книг "вы не знаете js". В основном нужна практика.
Зависит от задач, что заказчику требуется, то и используешь. Обычно упирается в поддержке браузеров. Голый XMLHttpRequest не используют, обычно используют axios.
$('.col-md-3') - вот это очень плохая реализация, не стоит использовать классы bootstrap для подобных манипуляций, допиши свой селектор при необходимости используй !important к нему.
Навесь на кнопки дата атрибуты, при событии click считывай их, передавай в функцию для открытия форм, перезаписывай значения из параметров данной функции. Примерно так
Индекс максимального значения перезаписывается в переменную и его значение сравнивается с текущим значением в цикле, если текущее больше последнего максимального, то его индекс перезаписывается в переменную максимального иначе просто пропускается.