1) Every page already contains tags in the body for the course and category (among a bunch of other useful selectors), so you can just have one CSS always loaded in the theme, and set up rules for different courses/categories etc.
2) The admin can create one main theme, and then use it as the base for a number of variations implemented as individual themes. In Admin > Appearance > Themes >Theme settings, turn on allowcoursethemes and allowcategorythemes. This will let your teachers choose a variation from a list.