смотрите. функция $next($request) передает реквест дальше в обработку. это "дальше в обработку" включает в себя и экшен в контролере. Это используется например для того что бы после всех обработок - навешать еще какой нибудь обработчик который что то сделает с тем контентом который создал контроллер.
В качестве примера пример собственно из EncryptCookies, наверное пример из самой ларки будет понятнее
public function handle($request, Closure $next)
{
return $this->encrypt($next($this->decrypt($request)));
}
Собственно порядок выполнения: расшифровываем куки, передаем управление дальше в остальные middleware и controller, получив результат зашифровываем куки.
2. Сильное подозрение что вы что то навертели в куках. А именно ларка куки шифрует. По этому в $_COOKIE['counter'] у вас должна лежать абракадабра - которую вы прочитать не сможете. Если там лежит число - то его не сможет прочитать ларка потому что она ждет что там будет что то шифрованное.
3. А навертели вы следующее - исходя из 1 пункта, установка куки пролетает мимо middleware EncryptCookies и скорее всего отдается в чистом виде - и по этому при обновлении страницы Ларка не может эту куку прочитать.
Решение - добавить counter в $except в миддлеваре EncryptCookies или ставить ее раньше, посмотреть часть доки Ларки посвященному обработке запроса, и не трогать при работе с Ларкой $_GET, $_POST, $_COOKIE