Если все-таки сравниваются только соответствующие кортежи из списков (нулевой с нулевым, первый с первым...), то тут может быть вариант с множествами и одним фор.....
a = [('1', 'a', 'b', 'c'), ('2', 'x', 'y', 'z'), ('3', 'x', 'y', 'z')]
b = [('a', 'b', 'c', 'd'), ('x', 'y', 'z', 'w'), ('x', 'y', 'z', 'w', 'p'), ('u', 'o', 'n', 'm')]
final = []
for i in range(len(min(a,b))):
final.append(sorted(tuple(set(a[i]) | set(b[i]))))
final
[['1', 'a', 'b', 'c', 'd'],
['2', 'w', 'x', 'y', 'z'],
['3', 'p', 'w', 'x', 'y', 'z']]