“Concurrency primitives” is the broader term: it means basic building blocks for concurrent programming, including things like threads/tasks, queues, futures, and also synchronization mechanisms.
“Synchronization primitives” is a subset that specifically deals with ordering and coordinated access to shared state (e.g. mutexes, rwlocks, semaphores, barriers, condition variables, atomics.