Основное отличие состоит в том, что @property видна другим объектам, и к ним можно получить доступ, используя экземпляр вашего класса.
Вы можете использовать @synthesize в вашем файле реализации, чтобы автоматизировать функции определения детерминатора в вашей реализации.
Обновлено (после предложения @Graham Lee)
В соответствии с спецификатором видимости для вашей переменной экземпляра (@protected/@private/@public), ivar может использоваться в вашем файле реализации, подклассах или других классах. Неявное значение @protected, поэтому в вашем примере оно будет видимым для вашего файла реализации и подклассов.
Ответ 2
Первый - это объявление свойства, тогда как второе - только ivar.
Свойство - это автоматическое объявление геттера и сеттера для ivar, но если нет ivar (как в первом примере), свойство также создаст ivar.