#Spaces module is the most capable of all context-modules since it supports sub-spaces. We generally recommend it for structuring websites by some predefined pattern, like regions, schools, specialities, etc. Say, if you are creating a network for a country, you could use Spaces to generate contexts for States and Towns. Spaces can be private, public and secret.
#Groups are more generic. People have certain preconceptions about how Groups work and that makes them useful for allowing standard members create ad-hoc groups without any predefined hierarchy. Groups can not have subgroups. So, people can just add a group like "Proud Bikies" or "We all love pizza" and use it as they will. Groups can be private, public and secret.
#Channels are different. They are auto-generated from hashtags and labels. You can pre-create labels for various modules to suggest associations and steer the community towards certain topics. Channels can be followed, but can't be joined. They are always public. Unique feature is that you can associate content items with multiple channels, while you can only post them to one Group or Space, because Groups and Spaces privacy settings define content visibility, making it impossible to post to multiple without complex cross-checking.
#Events are like Groups, but they have start/end date, calendar and different actions terminology (attend instead of join, etc).
#Organisaitons are also a context module, like #People, but they can be "joined" by multiple trusted users. Unlike Groups, they can be used as IDs/Personas on the site. Orgs are meant for companies, institutions, etc., so that in case one member of an Organisation leaves, other members can take over the profile and continue using it. For example, here at UNA.IO I have a personal profile (Andrew Boon) and I can also switch to UNA Inc organisation profile to post some official content. Other team memebrs also have their personal profiles and they too can switch to UNA Inc and post under that ID.