Thanks Deirdre and Don. So Guest is really a strange name for "Can view Data Contributed by users and data about users (user data for short)". Interestingly you can be external and be allowed to join classes and then not be allowed to see contributions by other users. You can be a student and not be allowed to join/drop classes. You can be a student and be allowed to join classes but not see others contributions. All these combinations seem non-sensical to me.
These issues would go away if the Access and Guest settings were removed and they were fixed by the system at values that make sense for each of the user types.
It seems in this case flexibility has been gained only at the price of confusion and the risk of the admin making settings that cause the system to behave in unintented ways.