Что это
Переменная окружения - пара «имя = значение», например DATABASE_URL=... или STRIPE_SECRET_KEY=.... Код обращается к ней по имени, а значение подставляется при запуске. Поэтому один и тот же код у тебя на компьютере работает с тестовой базой, на сервере с боевой, и ни один ключ не лежит в тексте программы.
Где они живут
На компьютере - в файле .env в корне проекта. Его записывают в .gitignore, и на GitHub он не уезжает. Отсюда классика: локально всё работает, на сервере сайт падает. Файла там нет. Переменные надо прописать в панели хостинга. Агент с CLI хостинга сделает это сам, достаточно попросить: «сверь переменные из .env с теми, что заданы на сервере, и допиши недостающие».
Чем грозит незнание
В Next.js всё, что начинается с NEXT_PUBLIC_, попадает в код страницы, и его видит любой посетитель в браузере. Секретный ключ с такой приставкой считай опубликованным. Второй риск - чужой скилл: вшитая в него команда может прочитать .env и отправить ключи на чужой сайт. После крупных правок проси агента проверить, что ни один секрет не попал в браузер.