Se você estiver escrevendo um programa de espaço do usuário, não use os cabeçalhos do kernel diretamente (seja de arch ou include - o último inclui o primeiro como apropriado para sua arquitetura). Você precisa usar os cabeçalhos preparados para uso pelos programas userspace . Estes estão normalmente disponíveis em distribuições como um pacote separado, por exemplo linux-libc-dev no Debian; ou você mesmo pode prepará-los seguindo as instruções relacionadas acima.
Quanto à organização dos cabeçalhos no kernel, todos os cabeçalhos comuns estão em include e seus subdiretórios, e os cabeçalhos específicos da arquitetura estão em subdiretórios do diretório arch apropriado. Na maioria dos casos, você incluiria cabeçalhos de include (ao escrever o código do kernel).