- babel следует подключать по возможности всегда, хотя бы для обработки es7-8 фишек, которые вам понравятся, но еще не успели внедрить во все браузеры.
- webpack можно подключить через gulp. Вполне можно выполнять отдельные такси с помощью gulp, а что-то обрабатывать с помощью webpack`а. Так же можно, например, запускать отдельные npm скрипты для выполнения параллельной или последовательной работы gulp и webpack. Особо полезные фишки webpack (имхо): tree shaking, [name][hash].ext корректное именование файлов на выходе, динамический импорт файлов.
- делать отдельные сборки для старых и вечнозеленых браузеров можно. Подключать можно используя
<script type="module" src="module.mjs"></script>
<script nomodule src="fallback.js"></script>
Подобный хак. Сначала подключаем сборку для браузеров, поддерживающих модули, и почти наверняка, весь es6 (e7-8 не обязательно, поэтому может потребоваться babel для транспилинга es7-8 в es6), а потом в качестве фаллбека подключаем файл в котором весь код преобразован в es5 (или ниже, если необходимо и возможно).