it can't be static because it takes arguments surely?
Absolutely nothing to do with arguments. You know, you can look these things up on Google instead of guessing.
Static function defines whether you want to expose the function to other modules - i.e., other, separately compiled C files. It's a qualifier, like inline, so you use the return type as well:
static inline void function(int argument)
{
}
If you are making a library, for example, you want to have the interface functions without static qualifier. The "internals", i.e. functions that your module calls (for code readability / reuse within that module) can and should be all static.
Without static, compiler needs to expose the function for linker, and is forced to assume anyone can call the function from anywhere, so it can't optimize much. With static, only that file uses the function, so compiler can do whatever it wants.
A beginner often does small projects in one file. In this case,
all functions should be made static. Yes, beginners also forget to do that, resulting in larger and slower code.