Membership Types vs Groups vs Organizational Types vs Relationships
These are not the easiest of questions and we may take different approaches. EG we tend to use Custom Fields a lot more than Tags, others do the reverse.

Sometimes it only becomes clear after you have set things up and used them one way, and therefore it can make sense when trying civi out to try multiple approaches.

As you have spotted, Groups are the solution if people are signing up for eg Mailing lists, but even then it could be that the Group is a Smart Group built off a custom field.

To take a stab at your list examples like Endorsers sound like a Tag.

But a Relationship (civi term) is good when you want to keep track of start/end dates, eg if someone was a Partner in 2012-2014 since the history is recorded.

Similarly when you say 'Council', if you mean eg John was on the Council in 2012, then creating a 'contact' for 'council' and giving John a relationship of eg 'council member' means you can both see current council members, and former ones.

Also which CMS you use can make a difference, for example in Drupal you can use Views to publish members of a council, by constructing a View based on Civi Contacts that uses the drupal and civi concept of a Relationship to show all the contacts who have a current Relationship to the contact that is your council.

Hope that helps a bit