What is the difference between a function and a procedure
This is rather old distincion (from pascal - which is the most recognisable for this - see vonbrand's answer).
Function returns value, procedure does not.
This is only naming convention, the more common is just calling the both function, and if needed say that one does not return value.
Some programming languages always return value (like the last statement is sent) or get returning cell on stack and does not use it.
Other languages explicitly return empty value, so still you can assign it to variable, so there is no point of this distinction.