Yes, but it's more than that. It is saying that add() takes two arguments, num1 and num2, both of which are floats. num1 and num2 don't have to be declared again in the body of the add() function, but they do have to appear in both the function prototype and the line at the top of the function definitition (those two lines should be identical).
Yes, exactly.
You're right. "add" is the name of the function that was declared/defined above and the things in parentheses are the arguments to the function. Arguments are separated by a comma and are in the same order as in the function declaration. So numbers[0] gets passed to add() as the num1 argument, while numbers[1] is the num2 argument.
It's really not much more complicated than that. The only thing that I don't think you mentioned is the "float" at the beginning of "float add( float num1, float num2 )". That float is there to say that the function add returns a value of type float.
Good luck with your finals. This stuff is confusing at first, but once you "get it" it becomes interesting and you can do cool stuff with it. I'd also point out that it's worth the effort you spend on it, as unlike some other subjects you will be required to study, you will absolutely definitely use it. Also, languages other than C have very similar concepts, it's generally just the specific syntax that's different.