Não há nada de errado (vide stdlib.h).
Porém evite a redefinição, aplicando a condição abaixo em cada um dos headers:
#ifndef _SAMPLE1_H_
#define _SAMPLE1_H_
#endif
Dependências circulares não estão relacionadas a sua questão. Ela só vai ocorrer se seu arquivo e/extern.h ou e/sample1.h incluir headers dos diretórios que previamente os incluem.