Do I need to do anything special to use NPTL instead of pthreads? I am on kernel 2.3.23...
I am asking because I am looking at some code which is presumably working with NPTL but I can see that it still includes pthreads, which AFAIK has problems like signal handling at thread level, spurious wake-ups, etc.
No.
NPTL is a newer implementation of POSIX threads, which is used on any reasonably modern Linux distribution.
The older implementation -- LinuxThreads -- was boken in many ways, and you are unlikely to ever encounter it.
Both implementations are pthreads.