Держать проект на локальной машине (в смысле иметь возможность запустить его на локалхосте) возможно только для маленьких проектов?
Откуда у Вас такие заключения?
Т.к. с ростом БД и сложности окружения redis + сервер очередей + логи и т.п. держать, запускать и обновлять это всё на локали становится сложно.
Есть например, VirtualBox + Linux + [что-то ещё] + [...] и так далее. Ставите на виртуалку нужный вам набор софта, запускаете, пользуетесь.
Сложности в установке/настройке программ... ну это очень риторический вопрос, кому-то сложно даже интерпретатор PHP из архива распаковать...
Вопрос с тем, что может требовать значительных ресурсов (например, базы данных) занимая большой объём дискового пространства или создавать большую нагрузку на вычислительные ресурсы машины - тут вариантов несколько:
1. Хранить базы данных не локально, а работать с ними удаленно
2. Набор данных необходимый для разработчика - обычно ощутимо меньше, чем тот, что используется в реальном проекте. Используйте версию базы "для разработки", а не "продакшен" вариант
3. Если позволяют ресурсы (например, объем жесткого диска) и есть необходимость - используйте полную версию БД. Нагрузку на БД создают не объёмы данных, а объёмы обращений к этим данных (условно конечно, но суть такова). Иными словами, если у Вас база занимает 500Гб и структура проекта построена адекватно - работать даже с такой БД может вполне "обычный" компьютер.
И ещё вопрос: при использовании DEV-сервера можно держать файлы проекта у себя на машине и в PHPStorm либо автоматически либо вручную заливать изменения на сервер. А можно в шторме прямо к серверу подключиться и работать сразу с файлами на сервере, т.е. не иметь копии проекта у себя на машине по сути. Какой из этих вариантов лучше и почему?
Не совсем понятно, что именно Вы подразумеваете под "DEV-сервером" и зачем он Вам нужен вообще? Я за более 10-и лет разработки с реальностью подобного рода серверов сталкивался в двух случаях:
1. Необходимость иметь некоторый эталонный сервер и/или сервер, с помощью которого можно демонстрировать работу конечному заказчику или разработчикам проверять свои правки и нововведения в условиях "эталонного" окружения (что в целом легко реализуется в большинстве случаев, при возможность запустить виртуальную машину на компьютере разработчика)
2. Мой рабочий ноутбук настолько слаб, что с трудом "тянет" даже phpStrom, не говоря уже о всяких VM и прочих "прелестях жизни", в этом случае меня неоднократно выручал удаленный вирт. сервер
Далее, "подключиться к серверу и работать с файлами сразу там" - Вы что имеете в виду? Пробросить SSH-туннель или иным подобным образом подключить файловую систему сервера как сетевой диск? По моему, без прямой необходимости в обратном, "
лучше" - использовать средства автоматического "деплоя". А как "лучше" выгружать файлы на конкретный сервер, "руками" или "как-то ещё" - зависит от множества факторов, в т.ч. от того, как часто это нужно делать, кол-вом "выгружающих" и т.д.