You are looking at the concept of an application group. An application group is tied to a package_id.
Check out the tcl api https://openacs.org/api-doc/proc-view?proc=application%5fgroup%3a%3anew
I am not sure why the application group procs are private.
Also see: https://openacs.org/api-doc/proc-view?proc=application%5fgroup%3a%3agroup%5fid%5ffrom%5fpackage%5fid
which will return the group_id given a package_id.
Using this you should be able to create a group and grant permissions. Also use the tcl api for permissions. https://openacs.org/api-doc/procs-file-view?version_id=43373&path=packages/acs-tcl/tcl/acs-permissions-procs.tcl
One more thing :) If you are using OpenACS 4.6.2 or higher, look into the apm package callbacks. You can attach the group creation and permission granting to a callback that is automatically run when a package instance is created.
Can you think of a good example package(s) that might illustrate the callbacks and api(s) mentioned above?