Those extensions aren't really new, they are old. :-)
When C++ was new, some people wanted to have a .c++ extension for the source files, but that didn't work on most file systems. So they tried something close to that, like .cxx, or .cpp instead.
Others thought about the language name, and "incrementing" .c to get .cc or even .C in some cases. Didn't catch on that much.
Some believed that if the source is .cpp, the headers ought to be .hpp to match. Moderately successful.