Regarding your 1st question -
UNION removes duplicate records (where all columns in the results are the same), UNION ALL does not.
So, you will need to use UNION to remove duplicate records.
Regarding your 2nd question, it totally depends on what do you want to work on the each row. This can be done by
1. Using function(s)
2. Using Cursors.