I would let Incus mange the datasets for you. When creating a new Incus storage pool you can create it using the zfs storage driver. I recommend passing in a full disk or a full disk partition. This is important for performance.
incus storage create pool6 zfs source=/dev/sdX
See: How to manage storage pools - Incus documentation
After you start using the storage pool, you can explore what it creates by using the standard zfs cli commands.
Once you have the pool setup, I recommend also creating two volumes for your backups and images.
You can configure Incus to use these volumes instead of using what ever filesystem you use for /var/lib/incus
.
See: storage.backups_volume
and storage.images_volume
at Server configuration - Incus documentation
All of this works pretty well for me. I am running Debian 12 with the Zabbly kernels and zfs builds.
See: GitHub - zabbly/linux: Linux kernel builds and GitHub - zabbly/zfs: OpenZFS builds