Модификаторы доступа - это, по сути, интерпретация инкапсуляции в ООП. Напоминаю, что инкапсуляция - это механизм сокрытия реализации объекта. Простой пример из жизни. Многие из Вас ездят в метро, и Вы сначала проходите через турникеты, прикладывая к ним специальный билет. Затем, если на Вашем билете ещё остались поездки, то турникет Вас пропускает, а если нет, то пищит и не пропускает. Вы задумывались над тем, почему так происходит? Вы задумывались над тем, как он определяет, сколько поездок ещё...
Модификатор protected определяет свойства и функции, которые из вне класса видны только в классах-наследниках: Здесь в классе Person свойство name определенно как protected, поэтому оно доступно в классе-наследнике Employee (однако вне базового и производного класса - например, в функции main оно недоступно)...