最後の方の書き方がわかりにくいので付け加えます

例えば、static link libraryが内部的に使用するクラスを
cpp側でincludeしていた場合、使用する側はそれも
includeしなくてはならないのでしょうか?
簡単に表してみると下のようなイメージです

staticlib.h
classAについての定義のみ

staticlib.cpp
#include "inneruse.h"としてこれを使用

user.h
#include "staticlib.h"
#pragma comment(lib, "staticlib.lib")
#include "inneruse.h" // ←必要かどうか?

user.cpp
staticlib.hのクラスclassAを使用

また逆にuser.cppで直接使わなければならないもの
<string>や"windows.h"などはインクルードの必要はるのでしょうか?