In my opinion this is quite a basic question and not really on-topic for server fault. This is not the place for research, this is the place to come when you have exhausted other options and want other professionals who have also put in the time and effort to solve problems on their own.
That said, I'm in a good mood so here's some free advice that wouldn't fit in a comment box. I am breaking my own rule about posting an answer to a question I feel is off-topic. I feel so ashamed.. I hope someone downvotes and / or deletes my post to punish me.
To get you started: Yes, everything you said is possible.
Advice: I'd suggest you not spend too much effort in designing how you're going to set everything up and focus on your actual requirements. Not 'I'd like's, but 'it must do x'. Build to that first. Work from there. If you were doing this all on one server before, you don't need two separate networks at this point.
I think you're over-designing it already. A simple approach that most common house-hold routers use would probably solve your biggest concerns. You don't want your 'internal' traffic to be using public addresses.
You don't need to put a public address on any of your servers (strictly speaking IPv4 here, IPv6 the concept is the same, you just don't need to NAT). You have an edge device (a simple router, or firewall, or load balancer, or another server set up to act as one of those). All of the server traffic happens on a single network.
Only your edge device needs to be on two networks. The public and your internal network. That edge device controls what can talk to your internal network. On home connections people do this all the time when they add a 'port forward'.
At my workplace we do the exact same thing in probably 90%+ of our use cases. And we have tens of thousands of servers. We just use very expensive load balancers that have much better control and performance for simple requests to spread among several servers or we use firewalls to control access to individual services.