Ну, начнем с Routing Rules. №2 убираем, вместо него у нас №6. В №1 заменяем dst if на any. Таким образом у нас останутся №№5 и 6 для входящих и №№1, 3, 4 для исходящих, для которых приоритетней wan2. Соответственно таблица, обозванная alt (я бы ее обозвал wan2_priority) , будет только для исходящих, не путать ее с wan2_return! Правила для исходящих можно объединить в одно, сделав группу адресов wan2_users_nets. Для симметрии можно сделать еще одну таблицу wan1_priority и соответствующее правило. Но это уже эстетика

. В этой таблице (или таблицах) *_priority у нас будут только маршруты в Интернет (all-nets) через оба wan, с мониторингом и разными метриками.
Насчет проброса. Рекомендуемый способ, чтобы и внешние адреса не терять и loopback был:
SAT any/all-nets -> core/wan_ip
NAT INT/int_nets -> core/wan_ip
Allow any/all-nets -> core/wan_ip
где INT/int_nets -- Ваши локальные интерфейсы и сети (в простейшем случае -- lan/lannet, но Вам нужно делать группы).
Ну, а что касается пробросов при работающем VPN, на это уже просто нет слов

.
В IP-правила подробно не вникал, замечу только, что разрешать всем https и пытаться рулить http -- странно. Гугл сейчас https по умолчанию, включая и youtube, думаю и одноклассники с контактиками могут

.
PS. Повнимательней перечитав, понял, что второе правило для тех исходящих, для которых приоритетней wan1 не просто для красоты, его
нужно сделать (выше возвратных правил), чтобы с этих клиентов был доступен wan2_ip.
И еще. Позаботьтесть о разрешении везде пинга, будет проще отлаживать. Правила для сервиса ping-outbound. Выше всех.
NAT INT/int-nets -> WANS/all-nets ping-outbound
Allow any/all-nets -> any/all-nets ping-outbound