Добрый день!
1) Как вы знаете, можно проект запаковать в jar или war. Притом, если запаковать в jar, то в Spring есть встроенный Tomcat (внутри Spring Web), который позволяет быстро деплоить проект на сервере. Если собираете WAR, то исключите из проекта встроенный Tomcat. Соответственно, сам проект нужно будет запускать в уже установленном Tomcat на сервере. Можно пойти чуть дальше и создать образ для Docker, где прописать все необходимые для деплоя конфигурации (например, скачать Tomcat, Maven и т.д.). Все зависит от того, как именно вы хотите развернуть приложение. Конечно же наличие Maven || Gradle Wrapper Будет плюсом. Не забудьте также завести отдельные профили конфигураций (yml или properties) для режима разработки и продакшна.
2) Принципиальная разница есть. Версии java 8, 11, 17 являются LTS.
Я слышал, что в версиях Java выше 11 иногда могут быть проблемы со Spring, но сам лично не сталкивался. Обычно рекомендуют использовать java 8 & 11. Но конечно же в более новых версиях Spring тоже должен работать.
https://www.infoq.com/news/2018/09/spring-51-java-11/
3)
Может вы что посоветуете, а то я только начинаю работать с JAVA.
Сложно что-либо советовать не зная уровня ваших познаний в Java. Если вкратце, то у вас должны быть знания на уровне Java Junior, чтобы вы могли начать разработку на Spring. Укрепите знания в Java SE (jcf, jdbc) & EE (orm, hibernate, jpa, servlet, jsp, jstl). Изучите Spring Framework, а затем Spring Boot и т.д.
Ответ на ваш вопрос на Хабре давался не один раз. Просто поищите и увидите, что необходимо изучить.