Из того, что я смог выяснить, заголовок и библиотека pthread в / usr / include и / usr / lib соответственно являются старыми реализациями LinuxThreads, и я предполагаю, что они существуют для обратной совместимости (то есть вы должны строить против старый интерфейс), но во время выполнения используется реализация NPTL (которая имеет интерфейс, являющийся надмножеством интерфейса LinuxThreads).
Таким образом, вы можете использовать новый интерфейс NPTL только (если вам требуется дополнительная функциональность), если вы знаете, что он вам нужен, и, что особенно важно, вы знаете, что интерфейс NPTL будет доступен во время выполнения.