If you use an auto property, you don't see the background field:
public int Counter { get; private set; }
This allows you to have it private for set and public for get, without having to write the backing field yourself.
Even if you're using a backing field, there are times when you want to still use the property, and not the field. A property setter can actually include other logic (validation/change notification/etc) which may be appropriate to call, but you may want to restrict the access to this to your class.