Right now you're asserting things about all this, while not being familiar with relatively basic aspects of how it works.
How are you with algorithms and data structures? I found going through CLRS to learn unfamiliar topics helped me a lot.
How are you with architecture? Check out Hennessy and Patterson; either Computer Architecture: A Quantitative Approach for a more in depth review or Computer Organization and Design if you want a lighter text. Both are amazing books, but some people find the former to be more than they need.
Operating systems? Modern Operating Systems by Tanenbaum.
Networks? Computer Networks again by Tanenbaum. A great free alternative here is Beej's Guide although it is much more hands on, practical, but slightly less in depth.
How are you with general design? C Interfaces and Implementations by David Hanson is good for that.
These are all subjects that I expect you to have at least some experience with, but studying them in depth will significantly help you to understand how to design better C projects that produce more efficient executables in general, while also helping you to discern when to use what.
Anything beyond that I would say is likely specific enough that you should start specializing in that particular subject, like computer graphics or embedded systems (two areas where C really shines).
It's also worth noting that these are not your only options. There are loads of free options floating around the internet, and if you learn better with tutorials there's nothing wrong with that. These are just the textbooks that I used, and I found them to be a better toolset for me than anything else.
EDIT: Just to be clear, I still consider myself to be intermediate, but all of these resources significantly improved my skills.
The vast majority of practical references in the book are based on the MIPS architecture (as an example of a RISC processor).