Atomic vs nonatomic properties explained

Question from Stackoverflow:

What is the functional difference between these?

@property(nonatomic, retain) UITextField *userName;
@property(atomic, retain) UITextField *userName;
@property(retain) UITextField *userName;

Good explanation provided by bbum.