Good description of pipeline/table functions here:
https://asktom.oracle.com/pls/asktom/f?p=100:11:::::P11_QUESTION_ID:19481671347143 In terms of difference, the term "pipeline" is meant to convey something similar to a unix pipe, that is, as data is produced it can be immediately consumed by the next step.
Let's say function F returns a collection.
Then
select * from table(f)
will wait until F has completely finished execution, and hence returned it collection, at which point we can apply the TABLE operator.
If F was a pipelined function, then as soon as F starts producing some rows (and piping them), then those rows are made available to the TABLE operator *even though* the function is *still* executing.
Hope this helps.