respuesta de Jacob es bueno, sin embargo para responder a la parte de "¿cómo es esto diferente de un puntero de función?":
1) Un bloque es no una función puntero. Los bloques son la visión de Apple sobre cómo hacer que las funciones sean ciudadanos de primera clase en C/C++/Objective-C. Es nuevo para iOS 4.0.
2) ¿Por qué introducir este extraño concepto? Resulta que las funciones de primera clase son útiles en bastantes escenarios, por ejemplo, la gestión de trozos de trabajo que se pueden ejecutar en paralelo, como en Grand Central Dispatch. Más allá de GCD, la teoría es lo suficientemente importante como para que haya sistemas completos de software basados en ella. Lisp fue uno de los primeros.
3) Verá este concepto en muchos otros idiomas, pero con diferentes nombres. Por ejemplo, Microsoft .Net tiene lambdas y delegados (sin relación con los delegados de Objective-C), mientras que los nombres más genéricos son probablemente funciones anónimas o first class functions.
¡Muchas gracias, Jacob! Ahora encontré tutoriales en Blocks y aprendí un poco más) – wh1t3cat1k