У вас всегда будет один основной контекст управляемого объекта, который выполняется в главном потоке.
Если вы выполняете фоновую обработку в другом потоке, вы можете создать еще один NSManagedObjectContext в фоновом потоке, указывая на тот же NSPersistentStoreCoordinator.
Когда вы сохраняете / удаляете / обновляете в фоновом контексте, запускаются уведомления, которые вы слушаете в главном потоке, и объединяете изменения обратно в основной контекст.
Лично у меня нет объектов Core Data в App Delegate, потому что я не думаю, что они принадлежат там. Я думаю, что Apple использует это в своих примерах для простоты примера. У меня обычно есть объект CoreDataStack, который передается туда, где он мне нужен.
Вы можете взглянуть на API-интерфейс Core Data более высокого уровня, такой как Magical Record. Я только начал использовать это, и это довольно полезно, и удаляет много стандартного кода, который вы получаете из Core Data. Он написан Маркусом Заррой и командой, парнем, который, очевидно, много знает о базовых данных.
В iOS 5 данные Core были улучшены благодаря тому, что ManagedObjectContexts имел родительский контекст. Так что в вашем случае ваши фоновые контексты будут дочерними по отношению к родительскому контексту, и, очевидно, слить обратно гораздо проще. Хотя я еще не пробовал.