Entendiendo dispatch_async

Tengo preguntas sobre este código.

dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    NSData* data = [NSData dataWithContentsOfURL: 
      kLatestKivaLoansURL];
    [self performSelectorOnMainThread:@selector(fetchedData:) 
      withObject:data waitUntilDone:YES];
});

El primer parámetro de este código es

dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) 

¿Le estamos pidiendo a este código que realice tareas en serie en la cola global cuya definición misma es que devuelve una cola simultánea global de un nivel de prioridad determinado?

¿Cuál es la ventaja de usardispatch_get_global_queue sobre la cola principal?

Estoy confundido. ¿Podría por favor ayudarme a entender mejor esto?

Respuestas a la pregunta(3)

Su respuesta a la pregunta