el nombre es algo historico y fue por el paso de C a C++ pero es algo que dejo de ser despues de estandarizarse.
Son 2 lenguajes diferentes (parecidos en el nombre, pero nada que ver internamente) tus ejemplos lo esplican claramente
Cita: Actualmente existe un estándar, denominado ISO C++
(leelos ademas de postearlos) y podes tener problemas si mesclas codigo de manera mal, Tambien podes meter assembler y no por ello tiene algo que ver el uno con el otro.
para meter codigo C tenes que usar extern "C" porque el modo de uso de C++ de funciones no es la misma, tampoco de memoria, tood es distinto, y si, podes compilar codigo C en el compilador de C++, pero es preferible que lo hagas en el de C.