OK I can convert that to local time, but the big question here is should I always assume that the dates coming from Apple will come with +0000 = GMT?
No, but you should assume that Apple will provide you with a date in the same format (which includes the offset at the end). So, to convert it to local time, you would use something like this:
NSDate *expirationDate = [[NSDate alloc] initWithString:@"2014-04-21 02:05:10 +0000"]
And then to compare:
if ([expirationDate timeIntervalSinceNow] < 0) {
//expired
}
else {
//not expired
}
In all likelihood, Apple will probably always use GMT; however, if they feel it necessary to send the offset every time, you might as well check.