Ваш вопрос не очень понятен, но похоже, что вы хотите (поправьте меня, если я ошибаюсь):
vars1 = ["x1", "x2"]
vars2 = ["y1", "y2"]
main_list = ["a","b","c","d"]
result = []
for a1, a2 in itertools.product(main_list, main_list):
result.append((','.join((vars1[0], a1, vars1[1])), ','.join((vars2[0], a2, vars2[1]))))
Другими словами, значения в форме ('x1,<a1>,x2', 'y1,<a2>,y2')
для всех (<a1>, <a2>)
в декартовом произведении множества {'a', 'b', 'c', 'd'}
с самим собой, для чего действительно itertools.product
предназначено.
Результат:
[('x1,a,x2', 'y1,a,y2'),
('x1,a,x2', 'y1,b,y2'),
('x1,a,x2', 'y1,c,y2'),
('x1,a,x2', 'y1,d,y2'),
('x1,b,x2', 'y1,a,y2'),
('x1,b,x2', 'y1,b,y2'),
('x1,b,x2', 'y1,c,y2'),
('x1,b,x2', 'y1,d,y2'),
('x1,c,x2', 'y1,a,y2'),
('x1,c,x2', 'y1,b,y2'),
('x1,c,x2', 'y1,c,y2'),
('x1,c,x2', 'y1,d,y2'),
('x1,d,x2', 'y1,a,y2'),
('x1,d,x2', 'y1,b,y2'),
('x1,d,x2', 'y1,c,y2'),
('x1,d,x2', 'y1,d,y2')]