The Arduino IDE messes about with includes, effectively, it pre-processes your code before compiling, and inserts various stuff, creating a source code tree in a (usually temporary) folder which it then compiles, the libraries which the IDE chooses to put into the source code tree depend on what it detects is being used (by way of includes), it's all pretty brittle if you ask me, but anyway.
As a result, what you think (as a C programmer) should work, may or may not do what you think it should be doing when the Arduino IDE has done with it. In the IDE's "preferences.txt" file (if you open the Preferences dialog in the IDE it tells you where this is) there is an option "build.path" (this is not exposed in the GUI, you have to edit the file), set this to some specific path, reload the IDE, then compile your sketch, once done (regardless if successful or not) you can have a look at what the IDE slapped together and actually tried to compile in your specified path.
From memory (and I might be misremembering), I don't think you can actually include one library (SPI in this case) from inside another library's library code, I don't think the IDE looks deep enough to include the depended upon library in the temporary source code tree for compilation. The typical way to do it is, to include the depended library from within the example sketches you provide with the library themselves, ie, at the same place you include your library itself. This isn't TOO bad a solution, because most people using the Arduino IDE are just going to copy-paste your example(s) to use as a boilerplate anyway.