As I mentioned before, APOC contains functions and procedures; let's see how they differ. The keyword is complexity.
Functions are giving simpler services than procedures. Functions are designed to return a single value after a computation that only reads the database. Consequently, as you will have inferred, procedures can make changes to the database and return several results.
Procedures have to be CALL-ed. Functions can be referenced directly in a Cypher query (function is in bold).
CREATE (p:Person{GUID:apoc.create.UUID()})
We will see in a later chapter how to write our own functions and procedures.