1. Use gcc, it's free.
2. What is the UI, GUI? or just command UI? Anyway, I prefer to learn C++, it's not difficult. For GUI, on UNIX, I think you should have to learn Motif or X Window programming, on Windows, MFC is the best one. And shell programming can't provide GUI function.
3. You can mix, but for C code, do not forget use extern "C"
4. Maybe it's a B shell script, actually, you needn't put .sh for shell script file, but sometime it makes clear.