It works, but anytime you have custom networking or more complex cloud-init configs, you'll have to go into "snippets" territory or referring to files in a local filesystem of the host. They don't have API support for making snippets the last time I checked. Where I ran into this was when trying to set up hosts with Terraform on Proxmox VE (which works well itself too).
The best way to handle this (which is really terrible, honestly, but it works) is to make configdrive2 ISOs locally, and upload those using the API. That is, don't give Proxmox a cloud-init snippet, but rather a fully-built cloud-init ISO. This is basically bypassing/reimplementing Proxmox's cloud-init features yourself, which is terrible. But it works really well.
I try to do everything without Ansible: cloud-init is pretty powerful, too, but I am reaching the 64k limit, so sooner then later will go "back" to Ansible.
If you're already familiar with Ansible, what about doing some stuff with cloud-init and then having cloud-init trigger a local ansible run? Then you don't have to worry about running into the limit.
Although its supported, its not well documented enough to be a good way to learn about cloud-init in my experience. I tried configuring a K3's cluster across three proxmox nodes via cloud-init to get some exposure to it and eventually gave up and just configured them manually
I had the same issue at the beginning, and unfortunately stopped on it for over a year: then I went back and got it and now I cannot think of provisioning a VM by hand anymore