I find it very unhelpful to characterize the difference as between "protected and internal" vs "protected or internal". Which is "protected internal"?
You could say "protected internal is the least restrictive combination of protected and internal, therefore it means 'protected and internal'".
You could also say "protected internal restricts access to derived members or assembly members, therefore it means 'protected or internal'".
Yuck.
The better way to think about it is:
- the default accessibility of a member is "private" -- the smallest possible accessibility domain
- a modifier enlarges the accessibility domain of a member
- therefore protected internal enlarges the accessibility domain twice, once to derived members, and once to assembly members.
For more thoughts on this see:
http://blogs.msdn.com/ericlippert/archive/2008/04/24/why-can-t-i-access-a-protected-member-from-a-derived-class-part-three.aspx