В первом случае редакс ничего не знает про роутер, роутер используется сам по себе. Во втором случае роутер прикручен к редаксу и логика завёрнута в мидлварю из connected-react-router. В компонентах разницы никакой. Разница в том, что второй способ позволяет работать с роутером через диспатчи специальных экшонов там, где реакта нет — например, в redux-thunk или redux-saga.
Не надо собирать файлы галпом. Уже лет пять как не надо. Попробуйте что-нибудь современное и заточенное под современные стандарты. Vite, Rollup, Webpack, Parcel – тысячи их
Ты — нет. В указанном компоненте есть вызов одного единственного (кастомного) хука — useRecoilValue. Кастомные хуки — это функции, вызывающие обычные хуки, например useEffect
В js динамическая типизация. Грубо говоря, в нем все типы обобщённые. В приведённом примере используется синтаксис языка typescript. Это другой язык, в нем есть те самые обобщённые типы
Он работает. Он асинхронный. В документации про это написано. Если ты хочешь что-то делать с новым значением стейта, то это что-то ты должен делать в useEffect
А в тайм-ауте не меняется из-за замыкания. Это константа. Она никогда не поменяется в замыкании. Никогда.