Я предполагаю, что вы не пишете код, который будет вызываться сторонними разработчиками, которые не могут перекомпилировать свой код при изменении кода. (Например, вы не работаете в Microsoft, пишущей .Net Framework сам по себе, или DevExpress пишет набор инструментов управления). Помните, что стандарт кодирования платформы Microsoft .NET предназначен для людей, пишущих среду, и старается избежать множества проблем, которые даже не возникают, если вы не пишете среду для использования сторонними разработчиками.
Во 2-м случае определена правильность, единственное истинное преимущество в том, что привязка данных не работает с полями. Однако использование преимуществ является большим политическим преимуществом: вы получаете намного меньше недействительных жалоб от других разработчиков, которые смотрят на ваш код.
Все другие преимущества для свойств (которые хорошо объяснены в других ответах на ваши вопросы) в настоящее время не представляют интереса для вас, так как любой программист, использующий ваш код, может изменить поле на значение позже в случае необходимости и просто перекомпилируйте ваше решение.
Однако вы вряд ли получите стеки для использования свойств, поэтому вы также всегда должны использовать публичные свойства, а не поля.