> I know what pointers are and I have not written C before
Actually working with them confers a lot more understanding of them.
> For most applications you don't need to understand what kind of operations are costly.
I've often been given the task to fix severe performance problems in other peoples' code who simply did not know what kinds of operations were costly. Having performant code is a significant competitive advantage.
> For the vast majority of developers the opportunity cost for learning C seems quite high.
Not if you understand pointers. That's what usually trips up people new to C.
> it's easy to imagine that I may not work on something where this would be useful knowledge
This may be hard to explain, but you don't know what you don't know. You won't be able to see an opportunity to exploit your knowledge gained from using C. To go back to the car analogy, most people drive a car with zero knowledge of how it works. This winds up being expensive for them, when it's time to deal with problems with the car.
For example, the alternator shorted out in my car. I took it to the dealer for a repair, and they quoted me a fantastic sum including 2 hours of labor. I happen to know how the alternator works, and I've replaced alternators multiple times. I gave the service manager the step-by-step procedure to replace the alternator, and said it could be done in 15 minutes tops. The labor price quote dropped by more than half. It also turned out that they could get me a refurbished one for far less money, and since I understand what a refurbished alternator was, I was comfortable with installing a refurbished one.
Anyone not knowing how cars work would have had no ability to bargain or understand the tradeoffs.