Как получать актуальные данные с сервера в одном компоненте, если они меняются в другом?
Да, vuex будет вполне уместен, для вас он будет источником истины, откуда все компоненты будут забирать данные. Сделайте два vuex модуля - cities и stations - в них реализуйте соответствующие crud операции. Компоненты будут из них забирать/передавать необходимые данные.
Перейти на сокеты? Сделать плагин для Vuex. Можно и без сокетов, если у вас есть есть другой механизм подписки на изменения. На сокетах+Vuex это выглядит примерно так:socket.on("update_something", data => store.commit("something/update", data));