Is initializing a NSManagedObjectContext using NSMainQueueConcurrencyType only for the situation where that MOC has a child MOC that was initialize
NSMainQueueConcurrencyType is mainly for the contexts linked to the UI.
To keep the UI responsive, most of the business logic is best done in background threads and in "background" contexts. But the UI itself will need to use a context at some point, i.e. NSMainQueueConcurrencyType.
Child contexts with NSMainQueueConcurrencyType are well suited to editing panes where the changes can be saved at once, ie committed to the parent context. The parent does not need to use NSMainQueueConcurrencyType.
NSConfinementConcurrencyType is the default type. It links the context to the current thread, pretty often the main thread by the way. You shouldn't rely on the default type but in the simplest applications. NSMainQueueConcurrencyType and NSPrivateQueueConcurrencyType are best since you precisely know which queue is in use for every context.