бабель делает js из ts-a путем вырезания всего что относится к ts-y.
Как следствие ему например начхать на какие-то не валидные ts конктрукции, несовпадения типов и тп. Зато это очень быстро работает.
Тайпчекинг тебе придется делать самому - либо доп плагином (есть для вебпака специальный крутой асинхронный) либо на уровне иде (я выбрал этот варик)
ts loader же - компилирует тайпскрипт (по сути это обертка на tsс) и валится от ошибок в тс. И он намного медленнее бабеля. Но на выходе получится тот же js (при условии что тс был валидный) что и после бабеля