Hay un detalle "sutil": si en archivo2.h se define algún tipo de dato nuevo, y en archivo1.cpp haces uso de este tipo de dato como parámetro en alguna función, para poder colocar el parámetro en la declaración de dicha función en archivo1.h, forzosamente debes incluir archivo2.h en archivo1.h, de otra forma no te reconocería el tipo de dato en la declaración de la función.
Saludos,
José Jorge (Geo).