You’d only need to create six placeholder datasets if you intended to actually have six separate policy definitions along the way.
Let’s say we’re talking about /usr/local/lib/x86_64-linux-gnu/perl/5.34.0/auto/YAML.
Maybe you want to set compress=gzip on that specific folder, because it’s all YAML, therefore plain human-readable text, therefore super compressible with gzip. But you certainly don’t want everything along the way gzip compressed.
Let’s also say you maybe want a different set of policies for /usr than you have for /.
So you’d have three datasets:
poolname/ROOT/ubuntu -- mounted on / (mountpoint explicitly set)
poolname/ROOT/ubuntu/usr -- mounted on /usr (inherited)
poolname/ROOT/ubuntu/usr/perl-5.34.0-auto-YAML -- mounted on /usr/llocal/lib/x86_64-linux-gnu/perl/5.34.0/auto/YAML (mountpoint explicitly set)
/usr/local/lib, and all the intermediate folders as far as /usr/local/lib/x86_64-linux-gnu/perl/5.34.0/auto, would simply be normal folders inside the poolname/ROOT/ubuntu/usr dataset, if they don’t need any special properties of their own.
This isn’t the only way to manage things, but it’s the most sensible answer to your hypothetical question, IMO. You certainly could create shitloads of intermediate datasets, but I typically wouldn’t recommend it when there are that many intermediate directories.
Now, in the case of home folders… yeah, I have a parent dataset for /home as well as child datasets for /home/username1 and /home/username2, and I let the actual home folders inherit their mountpoint from the dataset mounted on /home.
Ultimately, you just need to organize things in a way that makes sense–hopefully to most any arbitrary relatively bright person as well as yourself–because the computer itself doesn’t give a rats ass how you organized it or even if you organized it. This is all about being able to recognize and maintain your own work.