Yes, these are unmanaged functions written in C++. The language that was used to write the CLR.
There is no fundamental distinction in the way unmanaged code uses the stack compared to the way managed code uses it. The only difference is that you need an unmanaged debugger to actually see the unmanaged functions in the stack trace. A managed debugger just reports a [Managed to Native Transition] in the stack trace and hides the unmanaged functions.
Which is productive, you are not normally interested in unmanaged code at all and may well be missing the required PDBs to make the trace accurate. Which, for the CLR, requires enabling the Microsoft Symbol Server. Managed stack traces are always accurate, the CLR gives hard guarantees that stack walks can work well since the garbage collector and CAS need to perform stack walks to get their job done. Unmanaged stack traces are more difficult due to optimizations in the C++ code generator, the frame pointer omission optimization is quite deadly to stack walking for example.
You can certainly see both. Project + Properties, Debug tab, tick the "Enable native code debugging" option.