A few ideas of NAT/IPv6
This is not strictly a pfsense question, so please feel free to move it to another section.
As you may all know, IPv6 is designed to have multiple addresses on a single interface. A common config is a ULA and a global address on the same interface. Why can't/isn't this done in the IPv4 world?
Back in the days before NAT came around, how did people run a LAN and have an internet connection. If all your hosts are getting addresses from the ISP then the LANs connectivity would be at the mercy of the Internet connection. Also all your hosts would need to have global addresses. I imagine that would be awkward for LAN administration (Imagine running a domain controller in this scenario).
Again this is a historical question. I know that in the v6 world you can have BOTH internal and external addresses and NOT use NAT, so you can have a fully independent LAN topology and have the globally routable IP addresses on hosts that go online.
Another whacky question. Do I need a router in IPv6 world or can I hook a switch to the modem and just get addresses from the ISPs DHCP server?
In the older case with public IP addresses inside the LAN, they were not all allocated by the ISP. The upstream routes a block to you, and you route it internally however you like. Your addresses work fine locally even if the ISP is down, the traffic is still local.
The only difference between a "public"/"routable"/"global" address and a "private"/"local" address is that your ISP will only route traffic for the former and not the latter. They don't care what you do with the addresses inside your network.
I don't think I've ever seen anyone running ULA+GUA at the same time on the same network.. It's link-local+GUA or link-local+ULA+NPt in most of the cases that I've seen.
Link-local on IPv4 is used now and then but not usually both at once. You might recognize IPv4 link-local as the IPs that Windows auto-assigns when it cannot locate a DHCP server, 169.254.x.x.