You can create different groups to segment out your snapins if that’s what you need.
Please remember that groups are not a catchall/assignall type of thing (unless you’re trying to use the persistentgroup plugin.)
Hosts can belong to multiple groups. However, just because a host is in a group does not automatically assign items set in that group to a freshly added host.
Essentially, groups are just a way to assign multiple hosts the same items all at once.
So you don’t need to have groups in a particular format, except for what makes the most sense to YOU.
In the case of tasks, All Snapins = all snapins assigned to a particular host. Single Snapin = a single snapin to task.
Group tasks essentially just create a task for each individual host within the group.
Hopefully this helps a little bit.