так, бля, попробую нормально сформулировать вопрос
какая разница между переменными окружения и переменными конфигурации в рамках бэкенд проекта, а не системы в целом
Не особо шарю, но насколько понимаю: переменные окружения в самой ОС, а конфигурация в каком-то конфиг-файле (.ini, .yaml, и т.п) который потом будет прочтен скриптом.
В .env схоже с конфигом записывают переменные окружения, чтобы не создавать их вручную каждый раз. Потом получают их при помощи os.environ("NAME")