функция next - это следующая в очереди миддвара, если таковой нет, то это - store.dispatch
твоя миддвара принимает action, который эксплуатирует, а затем передаёт следующей миддваре.
Чтобы передать дальше, твоя текущая миддвара возвращает вызов next c action в качестве аргумента, в противном случае action не дойдет до reducer(я так понимаю, возможно кто-то поправит).
миддвары - это серия функций, которые по очереди работают с экшеном(обычно в миддварах делают сайд-эффекты, типа вывод в консоли экшена или запрос на получение каких-то данных).
экшен задиспатчен -> серия миддлвар(работают с экшеном) -> экшен дошёл до редьюсера.
примерно такая же схема как у миддлвар в express,
приходит запрос(request) -> серия миддлвар(работают с request, формируют response) -> возвращается ответ(response)
Если нет вызвать next() в миддваре express, приложение подвиснет(если не ошибаюсь).