Functions in C allow programmers to organize code into reusable blocks. A function performs a specific task and can optionally return a value. Functions make code easier to understand, share, and isolate errors. There are different types of functions including standard library functions and user-defined functions. Functions communicate through passing arguments, returning values, and pointers. Recursion involves a function calling itself to solve smaller instances of a problem.