gets - It reads data from the standard input and it stops only when it encounters new line character. It does not take care about the length of the buffer. Now safe to use.
fgets - Unlike gets, fgets can read data from standard input as well as from file stream. It has one parameter which takes care about the length of the buffer. It reads buffer up to maxsize - 1 bytes.
puts - This function is used to write null terminated string onto console.
fputs - This function is used to write null terminated string onto console or file stream.
This is what I know about all these function.