Как вывести все возможные комбинации бросков двух кубиков?
Для вдохновения можно использовать itertools: from itertools import combinations_with_replacement
list(combinations_with_replacement('123456', 2))

Для неограниченного числа граней подход другой.
Можно сделать два цикла сделать, один вложен в другой:
внешний перебирает грани 1-го кубика, вложенный – 2-го.для грани_кубика_1 в диапазоне(число_граней):
    для грани_кубика_2 в диапазоне(число_граней):
        вывести комбинацию грань_кубика_1, грань_кубика_2
Я люблю всех однострочниками наказывать:
py -c "n,m=int(input('n=')),int(input('m='))" "((a, b) for a in range(1,n+1) for b in range(1,m+1))"
У вас в задании сказано, что кубики "разные". Понимаю это так, что мы их можем различить даже если число граней на них одинаково, например по цвету.
Следовательно даже в этом случае мы сможем различить комбинации, например (3, 5) и (5, 3). Кубики-то разные.