You should always do this in any case.
You can preferable use the new way of doing this in all headers
#pragma once
your code
....
....
...
This has nothing to do with compilation speed. This is a way to avoid double declarations
in nested includes.
Regarding changing headers often while developing you can go this way.
Include all your own headers in the pre-compiled header when they are stable.
This means that while you are changing things often in a header while working,
you should not include this header in the pre-compiled header. Then when your
work is more stable and does not change to often you may include the header file
in the pre-compiled header.
A little religious note about this:
----------------------------------
Making frequent changes in header should not be needed if you have thought things through
before hitting the keyboard. When I write code I try to write the headers first with all that
should be needed. Then I go into implementing the headers. If I then have to make a change
in a header it should be more of an emergency and tell that I did not think enough before
starting with the code. Of course this is true in a perfect world and of course I have to
change my headers now and then. But in general they should not have to be changed to often.
If you have to make changes in the headers often, it may be pointing to the fact that you
are creating to big classes. Always try to break things down to as small pieces (classes) as
possible and don't fall into the trap of having four of five giants taking care of all.
This is my personal notes. Others may think different. But I thought it could be mentioned
here as a note about pre-compiled headers.
----------------------------------