I have read out very clear definitions for these terms.
Protected : Access is limited to within the class definition and any class that inherits from the class. The type or member can be accessed only by code in the same class or struct or in a class that is derived from that class.
Internal : Access is limited to exclusively to classes defined within the current project assembly. The type or member can be accessed only by code in same class.
Protected-Internal : Access is limited to current assembly or types derived from containing class.