1) Внутренний - это C # equivelant ключевого слова VB.NET «друг», как вы уже догадались (в отличие от замены)
2) Использование выглядит следующим образом
internal void Function() {}
internal Class Classname() {}
internal int myInt;
internal int MyProperty { get; set; }
3) Это, по сути, модификатор доступа, который предусматривает, что доступность свойства class / function / vairiable /, помеченного как внутренняя, как если бы она была общедоступной для сборки, в которой она скомпилирована, и частной для любых других сборок