.h files provide you with the definitions of methods and data that are found in the .lib. .lib differs from .dll in that .lib are compiled into your final executable where as a .dll is linked in dynamically at run time.
As for moving additional things that you personally have added to the project. You will have to have everything that you are using on both PCs. There are a few ways to handle moving from computer A to B. First of which is install everything on PC B the same way it was installed on PC A.
Another way, which happens to be the way I personally handle external dependencies, is I add them relative to the project solution and then that way when I am moving from one computer to another I don't need to worry about whether or not it has every thing I need because everything I need is bundled up with the project.
Q: But isn't this more work up front than just installing the stuff on the other computer?
Yes, but imagine what happens when you want to go to a computer you don't have the permissions to install things on? What do you do then?
What if you have someone else helping with the project? Are they expected to setup their computer to be just like yours? (Good luck with that one. In my case all of my development stuff is on my Y: drive. Do you have a Y: drive? =D )
To be honest any way you do it it can lead to problems. So, which ever way works easier for your situation is probably the best.