Преобразование разделенных значений в наборы и вычитание, последнее при необходимости объединение в строки:
df['diff'] = [', '.join(set(o.split(', ')) - set(n.split(', ')))
for o, n in zip(df.Old, df.New)]
print (df)
Old \
0 Caramel Color, Color, Citric Acid, Treated Wat...
1 Natural Extracts, Glycol, Ethanol
New \
0 Caramel Color, Color, Citric Acid, Water, Flav...
1 Glycol, Ethanol
diff
0 Treated Water, Flavour Enhance, Caffeine
1 Natural Extracts
df['miss'] = [', '.join(set(n.split(', ')) - set(o.split(', ')))
for o, n in zip(df.Old, df.New)]
print (df)
Old \
0 Caramel Color, Color, Citric Acid, Treated Wat...
1 Natural Extracts, Glycol, Ethanol
New miss
0 Caramel Color, Color, Citric Acid, Water, Flav... Water, Flavour Reducer
1 Glycol, Ethanol