Hi,
to 2:
There are two options for direct exceptions in tunnel 2 situation_
If you have a forwardingprofile pac, you can use return "PROXY ${ZAPP_TUNNEL2_BYPASS} there and further you will need the same exception in the AppProfile.pac (or perhaps in the app profile itself.)
Other option:
For ZCC 3.8 or later, “return Direct” can be used instead of return “PROXY ${ZAPP_TUNNEL2_BYPASS}”;
If you configure under "Z-Tunnel 2.0 Transport Settings"the option “Redirect Web Traffic to ZCC Listening Proxy”. You may get rid of forwarding profile pac completely, if only “return direct” is remaining there.
Some infos here:
Best Practices for Adding Bypasses for Z-Tunnel 2.0 | Zscaler
To 3: That reads strange. 
In the app-profile pac, you usually define where the Z-Tunnel established by ZAPP is terminating. You can of course use if clauses (example in pseudocode), like
if $COUNTRY==“Germany” return muc1.sme.zscloud.net,
if $COUNTRY==“Australia” return tyo4.sme.zscloud.net // to avoid RS ZENs.
default: return ${GATEWAY_FX}:443;
This will force to terminate the tunnel in Tokio (if you are in AU) or to Munich (if you are in Germany) or to the closest ZEN if you are in a different country.
This should not (or must not) be done in the forwarding profile. Also I do not think that ZAPP is capable of establishing two Z-tunnels at the same time to different ZENs.
However… as mentioned before, you can define different explicit proxies in the forwarding profile. Those explicit proxies must also be defined as exclusions in the app profile (or perhaps app profile pac) to ensure that this traffic is not catched by tunnel2 (all ports and protocols).
So I used the IP addresses of the explicit proxy in the destination exclusions of the app profile.
If you like, you can use a certain ZEN node as explicit proxy, too. But I do not think that this is a good idea, because of potential side effects of the required exclusions in app-profile.pac or app-profile.
Also it violates the documentation:
In Tunnel mode, you must only use the forwarding profile PAC file to bypass traffic away from Zscaler Client Connector or to tunnel traffic to Zscaler Client Connector. Do not use it to tunnel traffic to the Zscaler cloud.
I guess, what happens if you do so anyway:
ZAPP establishes a Z-tunnel2 to the ZEN defined in app-profile.pac
Browser accesses a URL that requires a special explicit proxy (in this case a ZEN), as defined in forwarding.pac.
Traffic is “evaluated by ZAPP” and based on the config of App profile / app-profile.pac it is bypassed from Z-Tunnel2.
So traffic hits the explicit proxy (in this case a ZEN) “direct” not via ZAPP/Z-Tunnel/Zscaler DC.
If there is a local Firewall, this traffic must be allowed, of course.
If the explicit proxy is a ZEN,the ZEN will then behave like “pac file only” traffic forwarding and will try to “saml-authenticate” the user. Which might need more Bypass exceptions for the IDP, btw.
Therefore I would use this only in conjunction with 9480 (no-auth port works only from known locations) or dedicated proxy port (will reduce SAML authentication, but not avoid).
If you check the logs for this example you will see as forwarding method:
Client Connector / Tunnel 2: for “normal URLs”
PAC file /PAC over GRE/PAC over IPSec: for the URLs that use the explicit proxy.
Best regards
Andreas