Essa resposta possui vários erros e também está desatualizada. Por favor, veja outras perguntas / respostas e os comentários.
Nonatomic
nonatomicé usado para fins de multiencadeamento. Se tivermos definido o atributo não atômico no momento da declaração, qualquer outro encadeamento que deseje acessar esse objeto poderá acessá-lo e fornecer resultados com relação à multiencadeamento.
cópia de
copyé necessário quando o objeto é mutável. Use isso se você precisar do valor do objeto como está neste momento e não desejar que esse valor reflita as alterações feitas por outros proprietários do objeto. Você precisará liberar o objeto quando tiver terminado porque está mantendo a cópia.
Atribuir
Assigné um pouco o oposto de copy. Ao chamar o getter de uma assignpropriedade, ele retorna uma referência aos dados reais. Normalmente, você usa esse atributo quando possui uma propriedade do tipo primitivo (float, int, BOOL ...)
Reter
retainé necessário quando o atributo é um ponteiro para um objeto. O setter gerado por @synthesizereterá (também conhecido como adicionar uma contagem de retenção) ao objeto. Você precisará liberar o objeto quando terminar. O uso de retenção aumentará a contagem de retenção e ocupará a memória no conjunto de liberação automática.
Forte
strongé uma substituição do atributo reter, como parte da ARC (Contagem de referência automatizada do Objective-C). No código não-ARC, é apenas um sinônimo de retenção.
Este é um bom site para aprender sobre stronge weakpara o iOS 5.
http://www.raywenderlich.com/5677/beginning-arc-in-ios-5-part-1
Fraco
weaké semelhante, strongexceto pelo fato de não aumentar a contagem de referência em 1. Ele não se torna proprietário desse objeto, mas apenas mantém uma referência a ele. Se a contagem de referência do objeto cair para 0, mesmo que você ainda esteja apontando para ele aqui, ela será desalocada da memória.
O link acima contém boas informações sobre fraco e forte.