Hola.
Una función es un fragmento de código al que se salta con una llamada y se pasan los parámetros por la pila. Una macro es un bloque de código que es insertado donde sea usado por el preprocesador, pero carece de chequeo de sintaxis y tipos. Una función inline es como una macro para C++, pero se resuelve en tiempo de compilación, por lo que tiene chequeo de sintaxis y tipos (aunque es menos flexible que una macro).
En cuestión de velocidad, lo más rápido son las funciones inline y las macros, pero hacen que el tamaño del programa sea muy grande, ya que se repite el código encada lugar en donde sea utilizado (además, las macros tienen el problema añadido de que no se comprueba su corrección hasta la sustitución en el código).
Un saludo.
Ruben3d