Фраза корректна. Между словами, обозначающими пространственные пределы, действительно ставится тире, кавычки при этом не нужны, см. примеры в параграфе 8.1 справочника Д. Э. Розенталя по пунктуации.
Необходимо тире с пробелами: Москва – Санкт-Петербург.
Корректно: в Санкт-Петербурге, в городе Санкт-Петербурге.
Верно: в городах Москве, Санкт-Петербурге. Подробные объяснения Вы найдете в "Письмовнике".
Да, склоняются. См. в «Письмовнике».
Верно: города Санкт-Петербурга. Подробнее см. в "Письмовнике" на нашем портале.
Предпочтительно: за исключением Москвы и Санкт-Петербурга. Без "городов".
Кавычки не требуются, между названиями городов следует поставить тире с пробелами: железная дорога Москва — Санкт-Петербург.
См. в «Письмовнике».