Tanto include como require(como bien dices) pueden incluir ficheros sin importar que no sean .php
La unica diferencia entre include y require es que si el fichero que deseas incluir no existe, include solo da una advertencia, y sigue ejecutando el código, mientras que require produce un error e interrumpe la ejecución.
El colocarle .inc a un fichero me parece que es solo una convencion para que al verlo te des cuenta que es un fichero de los que usas con require o include, y no uno comun como puede ser un index.php que puede mostrar un listado o lo que sea. El .inc, para php no significa nada, el colocarle .inc a un fichero (hasta donde yo se) no le dira a php que lo tiene que incluir, a eso me refiero.
Si dejas tus includes asi:
datos-inc.php
datos.inc.php
Código PHP:
<?php
$pass = "lacontrasia";
?>
No hay manera de que mediante un explorador te vean el codigo.... y al mismo tiempo, a simple vista ya sabes que el archivo datos.inc.php es un archivo para incluir.
Y sigo sin entender el problema :D