<p>With the new approach of having the get/set within the attribut of the class like that :</p>

<pre><code>public string FirstName {
        get; set;
    }
</code></pre>

<p>Why simply not simply put the attribute FirstName public without accessor?</p>

Because, in the future, if you change the implementation, code using the current interface won't break.
For instance, you implement a simple class with a public field and start using your class in some external modules. A month later you discover you need to implement lazy loading in that class. You would then need to transform the field to a property. From the external module point of ciew, it might look the same syntaxicaly, but it is not. A property is a set of functions, while a field is an offset in a class instance.
By using a property, you effectively reduce the risk the interface will change.