I was in your shoes a few years ago, so I think I can give at least some insights:
Regarding VPNs, Tailscale is based on Wireguard, but makes configuration a whole lot easier, especially if you have devices with changing addresses. You do still need an account with them, but from there you simply install tailscale on every device you want to access via your VPN, and they should automatically get assigned IP addresses (100.x.x.x). Entering this assigned IP from any other device connected to your Tailscale network will give you a direct connection between the two.
With a bit of fiddling you can also enable subnet forwarding, allowing you to for example connect to devices on your home network that don't support installing software on them, but at least for your current setup I don't think that's necessary. It is fun to play around with though, and opens up a whole new world of possibilities. I use it to remotely manage my parent's Router for example, since merlin-wrt and many managed switches don't easily support additional software.
Cloudflare Tunnels are Kind of similar to a VPN, only that you don't connect your own devices with eachother, but instead connect your server(s) directly to cloudflare, who then take over the task of actually getting your data on the internet. The advantage of this is that you technically don't even need a public IP address, since any requests and answers will be forwarded through the "VPN", and only cloudflare needs to be publically accessible. This does require you to buy a Domain though, since that is what the forwarding will be based on.
In the same vein, but if you want to do things "more manually", I'd also recommend you look into Reverse proxying, if you haven't already. That's basically what turns "site1.example.com" and "site2.example.com" into different requests, usually to different IPs and/or Ports on your private network, allowing you to have multiple things running under one domain. Personally I use the "Nginx Proxy Manager" running in a Docker Container for this, mainly because it's nice and easy to get your head around, but there are several newer Options like Traefik or Caddy that I also want to look into at some point.
After this wall of text, I hope you have fun playing around with all of this stuff, I know I had, and I really learned a lot about networks and the internet in general. Oh, and don't be too stubborn to completely start from scratch occasionally, sometimes it's just the easiest solution...
I was in your shoes a few years ago, so I think I can give at least some insights: Regarding VPNs, Tailscale is based on Wireguard, but makes configuration a whole lot easier, especially if you have devices with changing addresses. You do still need an account with them, but from there you simply install tailscale on every device you want to access via your VPN, and they should automatically get assigned IP addresses (100.x.x.x). Entering this assigned IP from any other device connected to your Tailscale network will give you a direct connection between the two. With a bit of fiddling you can also enable subnet forwarding, allowing you to for example connect to devices on your home network that don't support installing software on them, but at least for your current setup I don't think that's necessary. It is fun to play around with though, and opens up a whole new world of possibilities. I use it to remotely manage my parent's Router for example, since merlin-wrt and many managed switches don't easily support additional software.
Cloudflare Tunnels are Kind of similar to a VPN, only that you don't connect your own devices with eachother, but instead connect your server(s) directly to cloudflare, who then take over the task of actually getting your data on the internet. The advantage of this is that you technically don't even need a public IP address, since any requests and answers will be forwarded through the "VPN", and only cloudflare needs to be publically accessible. This does require you to buy a Domain though, since that is what the forwarding will be based on. In the same vein, but if you want to do things "more manually", I'd also recommend you look into Reverse proxying, if you haven't already. That's basically what turns "site1.example.com" and "site2.example.com" into different requests, usually to different IPs and/or Ports on your private network, allowing you to have multiple things running under one domain. Personally I use the "Nginx Proxy Manager" running in a Docker Container for this, mainly because it's nice and easy to get your head around, but there are several newer Options like Traefik or Caddy that I also want to look into at some point.
After this wall of text, I hope you have fun playing around with all of this stuff, I know I had, and I really learned a lot about networks and the internet in general. Oh, and don't be too stubborn to completely start from scratch occasionally, sometimes it's just the easiest solution...