Hi Edward,
That's right, 'participants' will show you everyone who has a given role in a course, but 'assign roles' shows you only people who have been given that role at the course level.
The difference is between having a role and being assigned a role. If you assign someone student role at site level, that means that they have the student role in all courses, so you'll see them listed as a student in the participants lists of all courses on the site. But this role assignment is made only at the site level, you won't see this person listed as a student under 'assign roles' unless you actually added them at that level.
In terms of permissions, it makes no difference. If someone is a student in a course, then they get student permissions regardless of whether the role was given to them at the course level or the site level.
Hope that clarifies things. I confused myself writing it.
Steve