Выкладывают приложение в стор. Страницы оформляют на нужных языках, остальное гугл сам с горем пополам переведёт. А язык в приложении выбирается в зависимости от установленной пользователем в системе локали.
Сами уровни хранить в ассетах как ScriptableObject, а пройденные звёзды PlayerPrefs. Как вы разложите хранение, хоть ключ=значение для каждой звезды, хоть текст, в котором как у вас текстовые разделители или json - без разницы. Если конечно вы не заботитесь о манипуляциях со стороны пользователя в них.
StopCoroutine(OnHit());
Неправильное использование. По факту у вас ничего не останавливается.
Поэтому Lose вызывается много раз и в конечном итоге тогда, когда объекта уже не существует.
Потому что на устройстве, да и после сборки проекта под винду, никакой папки Ресурсов уже нет. Соответственно и файлов там то же.
Напрямую с файлами в юнити работать не нужно. Нужно работать с Ассетами.
С вашим подходом работает вариант, когда вы перед сборкой проекта ищите свои уровни, и сохраняете их имена в какой-нибудь файлик. А затем уже во время работы читаете файл.