Procedure do NOT return values. They do not include a "RETURN <somevalue>" statement in the code.
Procedures can include OUT parameters to allow values to be assigned to those parameters that the calling code can then use, but strictly and technically speaking that is not the same as RETURNing values.
Functions allow for a single datatype to be returned. That datatype may be atomic (i.e. a single value) or may be composite (i.e. a structure containing many values).
I'm not going to write syntax for you, as you can find the syntax for creating procedures and functions in the Oracle documentation:
Looking at the comparison table you've posted, I'm not sure where you got that, but it's wrong.
Procedures can call functions, and functions can call procedures, there is no such limitation to say that a function can't call a procedure.
Function's can use DML statements, though there are limitations if the function is going to be called from an DML statement itself.
Temporary tables and collection variables (they are not called table variables) can be used in both procedures and functions.
Not only can procedures NOT be used in a join clause, they cannot be used directly in SQL statements at all, only functions can (with some limitations on the function if it is to be used in SQL)
Transaction management is not dependent on whether it's a function or procedure, those statements are just nonesense.
Procedures and functions can both include multiple parameters including OUT parameters (if a function contains OUT parameters, it cannot be used in SQL). Whilst there's a limit to how many parameters you can have, you would be writing bad code if you get anywhere near that limit. In such cases, the values to be supplied back should be created in a structures variable type and supplied back using as few OUT parameters as possible.
Functions can return a single datatype which may be atomic or composite, thus multiple values can be passed back.
There is also Pipelined functions that can supply multiple 'rows' of data, examples of which you can find by searching.