One thing that people often use C for, and never (to my knowledge) Python, is low-level code such as operating-system kernels and embedded software.
C has a lot of of constructs that make it very easy to, for example, convert an arbitrary machine address into a pointer and dereference it, or tell the compiler that an address used for memory-mapped I/O might change even though this program doesn’t change it, or to specify the exact layout of an object in memory. It’s designed to run as fast as possible, with as little wasted memory, rather than be safe.
That’s what the comments about “letting you shoot yourself in the foot” are mostly referring to.