Чтобы ответить на ваш первый вопрос:
Да, счет удержания будет два.
Чтобы ответить на ваш второй вопрос:
Причина использования:
self.myString = x;
, что эквивалентно:
[self setMyString:x];
таков, что весь код обработки свойства выполняется правильно. Сюда входят уведомления KVO и код, который автоматически сохраняет x при его передаче.
Если бы вы просто установили:
myString = x;
в файле .m вы можете обойти весь этот код установки скрытого свойства и просто установить для переменной-члена myString указатель на x.