Is the impulse response of a real system is always a real function?
There are two parts to this answer:

In the time domain, if a real system is defined as one where the impulse response is entirely real (i.e., no complex component) and the input is real, then mathematically, the output signal is entirely real (you're just convolving two real functions, the output is real).
Things are more complicated in the frequency domain thanks to causality:
https://en.wikipedia.org/wiki/Kramers%E2%80%93Kronig_relations . An entirely real time domain impulse function (and signal) can be complex in the frequency domain. Then, because of causality, the real and complex components of the impulse response are themselves related to each other. The good news is that if you know one, you can calculate the other using the above linked Kramers-Kronig relations.