Actions are operations exposed by an OData service that MAY have side effects when invoked. Actions MAY return data but MUST NOT be further composed with additional path segments.
Functions are operations exposed by an OData service that MUST return data and MUST have no observable side effects.
These are similar to SQL functions versus stored procedures.
In SQL, functions are generally used to query, whereas stored procedures could be used for both query and modifications (update/insert/delete).