Changes to any the listed header files will cause ClassB to be recompiled.
I assume your ClassB.m file imports ClassB.h. With that and the C, D header imports; the A import in the B header; and the fact that the A header imports E header.
The only .m file that will cause a recompile of ClassB is ClassB.m.
Just follow the chain of which files are accessible from ClassB.m. Remember that imports suck in code from other files.