I would fall into your latter camp, being self-taugh. I started with the interpreted languages JS, Ruby and Python and, in the end, I didn't feel like I understood what I was doing until I got into C and even Objective-C. Therefore, it wasn't until I touched a pointer or dealt with memory management that I felt like I was really more than a coder.
Not everyone wants to learn C, or C++ for that matter, but at least taking the time to understand I/O and (in my case) POSIX systems goes a long way to writing better programs - even if they are just in Python.