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.