I can give you the basics of the table usage:
- grade_items contains a record for each current grade item for each course including categories and course grade items
- grade_grades contains the grade for each user for each item from grade_items (join on g.itemid=i.id)
- grade_categories contains the specifying information for each grade category for each course
- grade_settings contains any settings that are different than defaults for each course (course-specific unlike preferences which are user-specific)
- grade_letters maintains any custom setting a course uses for the letter grade boundaries
- all of the history tables mimic their respective regular tables except they keep all iterations of changes made to the respective items, grades, categories, etc.
- we don't use outcomes and we don't import grades so I'm at a loss there