Hi Jake,
1.) A VPN you could say is a best case scenario if you have the hardware for it, since the phones appear local, and you don't have to setup a separate SBC machine / VM. You need to be proficient in setting up VPNs to ensure all necessary traffic will reach its destination. Good for very large deployments.
2.) SBCs make provisioning, management, and SIP/RTP transport easy, reliable, and secure. No VPN required and they can traverse NAT using a single port. They are also immune to SIP ALG that many firewalls have and can mess up your VoIP traffic. You can set it up on anything from a VM to Raspberry Pi 3B+ or a full blown pc using our provided images. Good for large to medium deployments, but scalable to any size if needed.
3.) As for STUN, I would say you can get away with it for 1-2 phones but you have to enable static port forwards for both phones, and each you would need unique non-overlapping SIP and RTP ports (which can be a bit of a pain to manage). It would also be less secure because the traffic is not encrypted, and SIP ALG on a firewall can mess with it causing unexpected behavior sometimes. Good for just a few phones or non critical phones.
So there you go, 3 solutions for your cloud PBX, pick the best one accordingly.