В одной библиотеке наткнулся на файлы с расширением .hpp. После гугления узнал, что это - расширение хедеров для C++, а для C должны применяться .h.
Но в подавляющем большинстве книг и пособий для C++ применяются как раз .h.
Объясните, в чём разница между данными расширениями? Почему в одних проектах применяются одни расширения, а в других другие? И почему если .hpp для C++ - люди в большинстве своём всё равно используют .h? Является ли дурным тоном использование .hpp?
Технически компилятору вообще все равно какое вы расширение поставите - вы все равно указываете при инклуде полное имя с полным расширением. Поэтому ставьте как принято в вашей нейминг конвенции.
Про с++ и с - в принципе вы правы, однако это рекомендация, а не правило.