Yes, that syntax is acceptable to every compiler I've ever used. However if your compiler is complaining that it can't find the header file header3.h, then either the file doesn't exist, or it doesn't know where to find the directory header1.
The problem is often where your compiler's vendor (or your sysadmin) keeps include files. Outside of ISO standard includes, there is no specific place to keep them.
For example, the SDL library is available on (nearly) every platform, but where its header files are put is different on nearly every platform. Which is truly obnoxious...
So while the #include syntax doesn't change, what exactly you #include can cause grief. In the case of SDL, the recommended include is #include "SDL/SDL.h"
Thereafter it can be made to compile on every platform without the need to change the source code --instead you change the way the compiler is called. I've installed SDL in my compiler's default include and lib paths, so I don't need to do anything special for it to find the include and library files. On other systems it might be necessary to use the -I and -L command-line options.