Content-type linked to specific users and user-groups I am creating a system which has 2 types of user: a Member and a Group Admin. Members are put into Groups and are managed by that groups Admin. A Member can contact their Group Admin but not other Group Admins. Some of this contact data/messages should be visible to other Members of that particular Group, some information should be visible only to that Member and the Group Admin. In certain situations, a Group Admin should be able to become the Group Admin of another Group. Members can make complaints to Group Admins who are able to respond. Anonymous users should be able to make complaints, provided they provide extra information, e.g., name, address, telephone number. Ideally, when making a complaint they would be asked if they would like to create an account.

Being new to Drupal (started looking through the Docs a week ago) I'm having trouble with pretty much everything. Using Drupal has been made a requirement as it is meant to make the process easier; however, for me it is not. As there are approximately 800 different groups does this mean that I'm going to have a huge matrix of permissions? Am I going to have to create 800 different roles? I'm struggling visualising the architecture of the system and the modules I'll need. For example, I'd created a content-type Complaint; however, everyone could see it. Drupal 7 Core has no way to restrict different users from viewing specific content. I remedied this by installing a module: Content Access. Any suggestions for the architecture and modules would be useful.
Often times when using Drupal there are recipes or a collection of modules that will help you achieve your goals for a website so that your workload is  not burdened with custom PHP business logic code or SQL. Drupal helps to take away these technical difficulties when creating websites.

It sounds like you want to a site with groups of content and users. There exists active module(s) to allow easier site development of sections and groups of users within a website. The defacto module for this is Organic Groups (typically referred to as the "OG" module) and its set of sub-modules and contributed add-on 3rd party modules.


  Overview
  
  Enable users to create and manage their own 'groups'. Each group can
  have subscribers, and maintains a group home page where subscribers
  communicate amongst themselves.
  
  They do so by posting the usual node types: blog, story, page, etc. A
  block is shown on the group home page which facilitates these posts.
  The block also provides summary information about the group.
  
  Groups may be selective or not. Selective groups require approval in
  order to become a member, or even invitation -only groups. There are
  lots of preferences to configure groups as you need.


OG is not a small or simple module in it's administrative configuration, or it's supported API. But, it's goal is to make your stated problem easier to implement in a standard fashion/codebase for site developers.