I don't think you need group_types.
You probably way to create an application group (a group that has a package_id) then crate roles and relational segments within the group for that package.
Then you can grant whatever combination of privileges for each role.
I am not sure there is a simple example available. dotlrn uses this extensively but strangely uses group types for EVERY group (which maybe have been overkill) so I don't recommend as an example unless you want to have infinitely complex code to support infinitely complex applications.