Что лучше использовать в реальных проектах Свойства или Protected переменные и методы к ним?
мода на геттер/сеттер просто так, вроде как отходит.
самая фишка геттера и сеттера, что в них, как по триггеру, можно делать попутные действия. чаще всего валидаци или логгирование, но могут быть и более хитроумные завязки
вопрос защищенности поля, совершенно самостоятельный. надо отдельно изучать когда и зачем скрывать поля от других классов (private) или сборок (protectet)
стоит учесть что к сокрытию кода это вообще не имеет отношения. зато более чем важно для создания потокобезопасных классов/методов
Свойства. Пример с протектед - говнокод из C++, где свойств нет.
Если поле является protected, то подразумевается что его напрямую можно менять из всех классов, которые находятся в этом пространстве имен.
Если хочешь чтобы поле напрямую менялось отовсюду, то это публичная переменная.