Ha...I miss working with you Bob! I always enjoyed your questions because you tend to interpret things literally and assume that speakers and writers do the same.
A dataset prefix must be owned before one can issue a permit it or anything prefixed with it. This is true whether the prefix is an actual DSN prefix, or if the prefix begins with masking characters.
So your example of DSN(XXX.) covers dsns that are prefixed with "XXX." to accommodate the placement of permissions that are prefixed with "XXX.".
To be able to place permissions that are prefixed with masking characters, you must "own" masking characters such as DSN(**), DSN(++). Even if there is just 1 masking character followed by actual DSN characters, it must also be owned...for example: DSN(*.). There can be many other combinations but these are common examples. This is done with the TSS ADD command just the same as owning any other DSN prefix or resource. Once owned, you can then deploy permissions that are prefixed with these masking characters. Note that if DSN(**) isn't owned, then if you try to permit DSN(**) or DSN(**.PROCLIB), you'll get an error "DATASET/PREFIX NOT FOUND IN SECURITY FILE", just like you would if you were trying to use an actual DSN prefix that hasn't been owned.
It's important to note that unlike owning an actual DSN prefix (like the XXX. example above), the act of owning a masking character doesn't PROTECT anything ... it simply defines it to TSS, enabling you to place TSS permissions using that prefix. I point this out because I've observed administrators who are hesitant to own DSN(**), thinking that will cause all DSNs to be protected, but, that is not the case at all...no protection occurs with ownership of a resource that begins with a masking character.
Primary reasons for having to "own" datasets/resources is to protect them and enable permissions to be deployed. But a secondary reason is to support more efficient processing of the TSS WHOHAS command: For every permission of an owned resource, there is an entry made in both the ACID where the permission is TARGETED, as well as an index entry in the ACID that OWNS the resource. This makes for a much more efficient retrieval of the information about the permissions when running the WHOHAS command, as the TSS command processor simply needs to retrieve the inventory of all permissions out of the ACID that owns the resources (vs. having to search the entire TSS SECFILE for matching permissions).
And you are correct: PROFILE ACIDs are not owned and don't involve generic prefixes.