These two assignment statements
// Form to-one relationships
C1.member1 = P11;
C1.member2 = P12;
are setting the values of the properties member1 and member2 in the Couple object C1.
They are equivalent to these statements:
They are all setting up relationships between objects (connecting one object to another object).
As for the copy attribute in the property declaration:
@property (copy) NSString *name;
That causes a copy operation to take place when the value of the name property is set:
NSString *someName = @"...";
Person *p = [[Person alloc] init];
p.name = someName;
if (p.name != someName)
// name is a copy of someName, because of the copy attribute of name property.
NSLog (@"name is a copy of someName!");
// name would be a reference to someName, had the copy attribute of name property been assign, retain, or strong.
NSLog (@"name is a reference!");
These are all fundamental concepts. You can read more about them in the official Objective-C document set.
Bring up the Documentation in Organizer in Xcode, and go to Tools & Languages/Objective-C and read as much as you can.
You can also find lots of examples in Class References. For example, if you look up the NSString Class Reference you will see two sections: Companion guides & Related sample code. So get into the habit of reading the Class References.