Thanks for all the advice guys. Got myself some 16f628's and going to start learning on those, and I will take a look at the different compilers mentioned.
For the most part what it means is that you can have several functions with the same name and the compiler tells them apart by the number and types of paramets used in the call. Also see function signature.
A function's signature is a combination of the function's name; the number, order, and types of its parameters; as well as any qualifiers that can be applied to the function.