Как я понимаю, лучше всего для этого подходит виртуальный сервер - VPS. Так ли это?
Не обязательно. Возможны варианты.
Серверное приложение - это по сути программа, которая всегда работает на этом самом VPS. Например, которую запустили через линукс-команду screen, чтобы она не отрубалась
Это порнография, а не серверное приложение. Хотя направление мысли верное, но более правильно запускать приложение через systemd unit или что-то вроде supervisord, а не использовать screen.
Для простоты работы с зависимостями и развёртывания классно использовать Docker
Docker - это не магия, за всё придётся платить. Если где-то сложность уменьшилась, значит где-то она увеличилась.
Но не отразится ли использование Docker на производительности веб-приложения или игрового сервера?
Само по себе использование docker особого оверхеда не даст, а вот не лучшим образом собранные образы имеют место быть, как и полное непонимание того, как работает "эта фигня в докере".
У VPS есть определённый IP-адрес, по которому будет доступен мой сервер/сайт. А что случиться, если я захочу поменять VPS? Получается, у меня поменяется IP?
В пределах одного хостера IP может и получиться сохранить, но вообще всегда нужно быть готовым к тому, что IP придётся изменить (привет, роскомнадзор!).
Как это правильно хендлить? Ведь клиентская часть будет привязана к старому IP.
Пусть привязываются к доменному имени, а не к IP и проблем не будет.
Нужно ли на VPS ещё получать сертификат, чтобы было соединение по HTTPS?
Да
Как это правильно делается?
https://letsencrypt.org/ru/
Какие принципы безопасности нужно соблюдать при работе с VPS, чтобы защитить его от взлома?
DigitalOcean как замена хостингу. Как всё грамотно настроить?
PS Слишком много вопросов для одной темы.