Precompiled headers should NEVER be exposed to users of a library. They are a detail of the implementation of a library; nothing more. PCHs are something that .cpp files include; they should never be included from a header file.
Remember: a header file should include only what that header file absolutely needs to in order for it to compile.
Let's take your example. Project A uses DirectX. Therefore, the .cpp files in Project A include a PCH that includes the DirectX headers. Now, if the interface to Project A uses DirectX objects and types, then the Project A interface headers (the ones used by users of Project A) will need to include the DirectX headers.
This will not affect the ability of Project A to use a PCH to improve compile times. The DirectX headers have include guards, so they will not be included multiple times. It costs nothing to include them in the interface headers of Project A.
Project B, which uses Project A, will have its own PCH files. This PCH will include DirectX and Project A's headers. Therefore, the inclusion of DirectX in Project A's headers will not affect the build time of Project B.
Project B uses Project A. But, as you have described it, Project B does not expose any users of Project B to Project A or DirectX. That is, the fact that Project B uses Project A is an implementation detail of Project B, and therefore it should not be exposed to users of Project B.
As such, Project B's interface headers (the headers used by users of Project B) do not include anything from Project A or from DirectX. Therefore, this Project C which uses Project B will not include them.