>What does it serve to place a "*" before a function name.
It declares the function to be returning a pointer of some type. The function strcat returns a pointer to char.
>Furthermore, what does "const" before char *s2 mean? Am i right to say it means what ever string s2 is pointed to cannot be change. It must remain constant.
Yes. The prototype makes a promise to you, the caller, that the function will not modify what is pointed to by s2.
>what is the difference between static and global variables?
Does this help?