psybox you got it all pretty much right, except about server hostnames. My hostnames aren't setup to be related to the staging site domain, in your example my hostnames are host1.yourdomain.com, host 2.yourdomain.com.
And then the last step about Cloudflare, no I don't have records on my staging domain that point at anything anymore, since my test of making it automatic failed... The result of the test showed that whether you use a dedicated staging domain name or your main domain, it doesn't matter because Cloudflare and enhance don't work for automatic staging.
So you can keep using your main domain set to staging.yourdomain.com. And when you need to setup a staging site it will be site.staging.yourdomain.com. You will then need to create that as an A record in your Cloudflare (and you will need to buy $10/mo Total TLS do you can get an advanced SSL certificate that can put SSL on sub-sub-domains).
The alternative to all that is to use enhance DNS for your staging domain, then it will handle it all automatically. But you get no Cloudflare protection.
I'm not quite sure which way I'm going to go... I don't want to have to update my staging DNS at Cloudflare every time someone needs staging setup. But I also don't want any part of my stack to be unprotected by Cloudflare... For now, I'm just going to update Cloudflare manually as-needed, maybe enhance will fix this situation some day and it will work automatic.