Every time you write a new pin to the user defaults, it overwrites the old one. Instead, write an NSArray or NSMutableArray to the user defaults and add/remove pins from it.
UPDATE: First of all, the NSMutableArray needs to be copied from the user defaults, not alloc/inited. This way, the array will already contain the previously saved points in it:
NSMutableArray *pincoords = (NSMutableArray *)[[NSUserDefaults standardUserDefaults] objectForKey:@"saveCoords"];
This will return a mutable array with your previously saved coordinates.
As for the method you are using to store the coordinate in the array, I think you have the right idea, but I've personally never done it that way. NSArrays can only store objects, and CLLocationCoordinate2D is not an object (probably a C struct like NSRect, I've never used it before). It needs to be converted to a NSCoding compliant object, such as NSString, NSNumber, or NSDictionary. What you could do is create a function to manually enter the coordinate values (wrapped in an NSNumber) into a NSDictionary (using keys such as @"Lat" and @"Long" for your coordinates), and then store the NSDictionary in your mutable array.