где можно взять массив городов
Изначально, я думаю, в интернете, например
тут. После чего, Вы можете их сохранить либо в один большой-большой JSON, либо так и оставить в базе данных и получать их оттуда.
Далее, алгоритм выглядит примерно так:
1. Пользователь выбирает страну, на сервер отправляется ID выбранной в селекте страны (GET или POST запросом)
2. В ответ от сервера приходит список регионов/городов выбранной страны, предположительно в формате JSON
3. Полученный список разбирается на ID=Значение, которыми заполняется второй селект
Можно так же заранее заполнить второй селект всеми возможными городами и потом скрывать лишние, но я бы так делать не стал, так как данных будет очень много и грузиться эта страница будет так же, не очень быстро...