If I were to write a library for a C-incompatible language (like D), where would be the best place to install my "header files" to?
usr/include seems like a bad idea, since the FHS says it's for "header files included by C programs."
You define your own conventions, but I'd indeed stay away from /usr/include.
/usr/lib/<lang> seems popular here for interpreted languages (I've at least /usr/lib/python, /usr/lib/perl and /usr/lib/ruby with variants for the handling of version specific stuff) I think that /usr/share/<lang> is more proper from the FHS (I've also /usr/share/tcl with a symbolic link from /usr/lib/tcl) if there is no binary data there (or at least only architecture independent binary data).
Still in the FHS spirit, I'd tend to use /opt/<lang>/share or /opt/<lang>/lib while providing the installer (or the distribution) an easy way to use /usr/share/<lang> or /usr/lib/<lang>.
I'd say /usr/local/include/ for your own additions. Linux Filesystem Hierarchy Standard