DH
Так как CoreData не Thread-Safe, то дергать ее обькты можно только из того потока в котором объект создан.
NSLock - просто заблокирвать. NSRecursicveLock - заблокировать для других потоков(что бы если у тебя рекурсия не блокировало)
NSRecursicveLock , NSLock - это уже старое API, сейчас везде используют GCD, OperationQueue и мало того появились еще более модные штуки.
Я честно говоря такие штуки в проектах уже 7 лет не видел.