The standard way for a C++ compiler (preprocessor really) is to not search include directories recursively for include files. I am aware that Borland's C++ compiler violated this standard by adding recursive include directories, but most other compilers stick to the standard, which helps keep code portable. Of course, you can always give a relative path (like <sys/stat.h>) when doing a #include.
As for the relationship with C/C++ compiler includes, the quick answer is that there wasn't any, this was an oversight. I will have support make a hot fix available for this issue tomorrow.
Once you have the fix, when you do cursor-error (or Ctrl+Dot) on a #include, SlickEdit will look first in the user level include paths configured in your project include directories. If it doesn't find it there, then it will look in your active C/C++ compiler include directories. Next stop on Unix, as a last ditch, is to try /usr/include. If it doesn't find it there, it will search your workspace for a matching file. There is actually more complexity to it than that, but the bit about checking the compiler includes is the key thing.
You might be wondering: when do I add an include path to the project, and when do I add it to my compiler includes? The line is clear. The compiler include paths are intended to be the include search paths that are BUILT IN to your C/C++ compiler's preprocessor. These are the paths that you typically do not pass to your compiler with -I. Any path that you have to pass to your compiler in order to build belongs in the project include paths.