Через write файл должен создаваться, но перед записью в файл, стоит операция чтения из файла, если его не будет, то скрипт выкинет ошибку и следущие операции не выполнятся, в том числе и запись нового файла.
Ты не храни ключ, а передавай через параметры окружения. А вот что и как передаст это уже другой вопрос. Можно использовать так называемые секреты например. Но лучше нигде и никак не хранить его в открытом виде.
До сих пор не существует единого правила где его хранить. Ибо что одно что другое имеет как плюсы так и минусы. Вопрос а нужен ли вам вообше JWT или достаточно обычных сессий. Чтобы ответить на этот вопрос нужно узнать какие проблемы jwt призван решать. Если у вас их нет, то скорей всего он вам не нужен
Ну самый первый вопрос который всегда задают, как отозвать скомпроментированый токен. Ответ обычно токен на 5 мин например + рефреш токен. Ок, а если рефреш украдут, что тогда.