Read the documentation for bagof.
You can use either. For the purposes of this assignment they are very similar. A good example of their differences can be found here: http://cs.union.edu/~striegnk/learn-prolog-now/html/node97.html
Means that the two terms cannot be unified.
You have to implement it if you want to use it.
Nope. That would be no fun.
helper(One,Two,Three) :- Three = One + Two. ?- helper(1,X,4). false. ?- helper(X,Y,Z). Z = X+Y.?
The "=" sign does not signify arithmetic equality, instead it performs unification. You probably want the "is" keyword.
Get creative! The usual suspects such as empty lists, and substituting things with variables are good things to try.