A non-inline function compiles to an actual call of that function. An inline function is basically copied inplace (inline) so there's no call and no symbol in the symbol table.
As such, an inline function must be declared in a header file since once it's compiled, there are no references to it. You cannot link to it from another object file, for example.
Usually, inline functions are slightly faster than non-inline functions since there's no function call anymore. Useful for getters/setters.