I am not going to argue against this, because it's true. C and C++ aren't exactly easy languages if used improperly. And it is a problem today. The same thing could, of course, be done in other languages too, so it's not like it's a problem unique to C and C++.
One needs to properly learn a language in order to use it well. That's true of any language.
I don't disagree with you. This is very true. But you still don't need to always know how exactly it's implemented, just its semantics. Sometimes we're force into situations where we have to know the implementation, sure. But that's then, and not now. It's just going to be a waste of time to teach everyone every single little thing. As a novice programmer, you don't need char*. If you're going to implement data structures, then yes, you need to know of it. But that's for later. Perhaps I should have been more explicit about this.