There are several different elements involved in your billing. I will try to disaggregate them as much as I can.
To work with Cloud CDN as you mentioned, you have two options.
If you are holding a Static Site, you can use a bucket configured as your backend. In this first case, you would be charged for the cloud CDN service and the storage used by the bucket.
You could use instance managed groups in your back-end. On this configuration, you can use autoscaler, which will create or delete instances as needed . In this case, you will have the Cloud CDN service price and you will also be billed by the resources used by the VM during their existence. You can find an estimate here in this Google Cloud Platform calculator.
As you also mentioned, VMs in your instance managed group can be deleted or recreated. That means the data on them must be static. If you have Website that is totally changing, the HTTP server can live on the VMs. But the data must be outside the persistent disk.
For example, you could have a Cloud SQL instance outside the group. Now, this could represent an additional charge on your architecture as well.
Bear in mind that independently of the solution you are using, all the back-end services are behind a Load Balancer. This LB has an external IP attached. Therefore independently on whatever happens on the back-end, the IP used to access your website will not change.
Have you checked the documentation on HTTP(s) LB?. While setting up the LB you can set the static external IP on that LB. This IP will be the address for the website. Every request will first hit the LB and the LB then redirect it to the appropriate instances. On a side note, reserved but assigned static IPs won't incur charges, however if it's reserved but unassigned you will be billed for it as mentioned in this help center article.