Когда вы добавляете объекты (item1 и item2) в массив, массив просто хранит указатель. Сам объект не копируется.
Таким образом, когда вы устанавливаете VarName для item1 или setVarName для первого элемента в NSArray, оба действия влияют на один и тот же объект (тот же экземпляр)
Что касается памяти mgmt, когда вы добавляете элементы в NSArray, NSArray (изменяемый или нет) сохранит каждый из них. Когда массив освобождается, он освобождает каждый из них.
Если у вас есть какая-то другая необходимость сохранить каждый элемент в отдельности, то вам следует это сделать (как в вашем примере). Но имейте в виду, что в обычных программах вы чаще всего просто добавляете новые объекты в массив и освобождаете их немедленно, так как массив сохранил их.
Но, опять же, трудно обобщить, не глядя на конкретный пример.