I think it could also be useful for you to have groups that classify “Parents” and “Children” in general, as it could make it easy for you to obtain the related users for your custom query.
For example, let’s say you wanted to obtain the children of the “Addams” family, you could first obtain all users that are in the “Children” group and then intersect those with the users in the “Addams Family” group (see API examples). You’d get only the user accounts of the children without their parents (although the parents also belong to the family group). Then you could do your query for the score page for those children accounts to display using a custom template.
So to answer your question:
> Would each family require a different custom page each to view group data?
Not if you approach it in the way I’ve suggested above and check which family group the viewer belongs to. If you assume that the viewer (the parent) belongs to a single family group, you could obtain that via Groups’ API and use it to dynamically obtain the results.
Here’s a piece of code using Groups’ API you could use to start crafting your solution (made it explicit and without checks so it’s easier to follow):
// Children and family group names
$children = 'Children';
$family = 'Addams Family'; // you would use that of the viewer
// Get the children group object
$children_group = Groups_Group::read_by_name( $children );
// Get the family group object
$family_group = Groups_Group::read_by_name( $family );
// Get the user IDs of all Children group members
$children_user_ids = $children_group->user_ids;
// Get the user IDs of everyone in the family
$family_user_ids = $family_group->user_ids;
// The intersection gives us the children of the family
$children_user_ids = array_intersect( $children_user_ids, $family_user_ids );
On the examples page I’ve linked to above you can see how to obtain the groups that the current user belongs to and adapt the above accordingly.
I hope that helps a bit, do ask if you need more help.