В справочнике Д. Э. Розенталя «Пунктуация» это правило описано более подробно: запятая перед соединительными и разделительными союзами в сложносочиненном предложении не ставится, если в его состав входят неопределенно-личные предложения (если мыслится один и тот же производитель действия): Стали искать черкесов во всех углах и, разумеется, ничего не нашли (Л.), безличные предложения, имеющие синонимичные слова: Необходимо рассмотреть авторские заявки и надо срочно составить по ним заключения. Но при отсутствии синонимичных слов запятая между двумя безличными предложениями перед союзом и ставится: Нету чудес, и мечтать о них нечего (М.); Между тем совсем рассвело, и надо было опять выходить в море (Кат.). Поэтому для постановки запятой между частями сложного предложения Было тихо и темно, и сладко пахло травами основания есть: здесь отсутствуют синонимичные слова.
В этом предложении при существительном Петербург имеется два приложения и одно согласованное определение, все вместе образующие ряд. Элементы этого ряда можно перечислить через запятую, а можно какую-то часть ряда отделить более сильным знаком тире, подчеркнув его самостоятельность:
...Петербурга, его родного города, любимого и жестокого, прототипа всех будущих городов;
...Петербурга — его родного города, любимого и жестокого, прототипа всех будущих городов;
...Петербурга, его родного города — любимого и жестокого, прототипа всех будущих городов (определение любимого и жестокого относится к родному городу);
...Петербурга, его родного города, — любимого и жестокого, прототипа всех будущих городов (определение любимого и жестокого относится к Петербургу).
Если поставить тире перед последним приложением, то сочетание согласованных определений нужно закрыть запятой:
...Петербурга, его родного города, любимого и жестокого, — прототипа всех будущих городов.
Запятую принято ставить.
Запятую принято ставить.
Запятую принято ставить.
Запятую принято ставить.
Нужно ставить запятую.
Запятую принято ставить.
Пробел рекомендуется ставить.