Frappe is framework, it is mandatory and default installed for any given bench installation on machine.
ERPNext is app built on top of Frappe Framework, so obviously if someone is going to use ERPNext it first has to be installed, then assigned and configured with particular site.
site1.local is also default site setup for you when you use easy install method, if you don’t use easy install method you will need to manually create site and while creating site in manual setup or post easy install you must also chose what app you need to install along with frappe for that particular site. Apps assigned to site can be installed anytime later or also possible to be uninstalled or removed from bench altogether.
<------------------ Bench1 ------------------>
Frappe (default app) <–> site1.local <–> ERPNext (additional app)
Frappe (default app) <–> site2.local <–> Custom Frappe App/Module (additional app)
Frappe (default app) <–> site3.local <–> ERPNext + Custom Frappe App/Module (additional app)
<------------------ Bench2 ------------------>
…
<------------------ BenchN ------------------>
…
Frappe (default app) <–> siteN.ext <–> ERPNext + Custom Frappe App/Module (additional app)
…
In any given case above, there will be no duplicate copies of apps will be created for any number of sites in that matter.
Now Bench is tool which does helps Server Admin to make and break things easily when it comes to Frappe/ERPNext ecosystem apps.
One Bench can host only one copy of App (be it Frappe, ERPNext, etc.) but any number sites under same bench can host any combinations of apps, as long as they are installed/available under same bench.
Bench allows you to setup nginx to support port based sites by default, where your hostname and port will play important role and each site will be assigned with unique port.
If someone dont want unique ports to be assigned for public use case, example: when you want your Frappe site instance to be available on 80 and 443 standard ports. Then you can turn on use DNS Multi Tenant feature which will allow you to have unique hostnames for each site under bench by keeping 80/443 port standard across all sites.
Once DNS Multi Tenant is turned on its better not use mess up with port based setup to avoid further complication with config files, unless you know what you are doing and an export user.
I hope it helps