Ну, для начала стоит прочитать какие нибудь материалы по if-else, да и вообще про основы.
Так сравнения не делаются
if a and b == "Красный" or "красный":
Должно быть
if a == "Красный" or b == "красный":
Ошибка тут потому что нет нормального разделения между переменными, из-за неправильного сравнений из примера выше, ну и в целом непонятна логика
if a == "Красный" or "красный" b == "Синий" or "синий" or a == "Синий" or "синий" b == "Красный" or "красный":
Не сравнивайте текст разного регистра, если человек текст заборчиком напишет, не будете же на каждый случай новое слово писать с другим рЕгИсТрОм. Приводите все данные к одному виду, например в нижний регистр:
a = input("Введите первый основной цвет, Красный/Синий/Желтый: ").lower()
b = input("Введите второй основной цвет, Красный/Синий/Желтый: ").lower()
Тогда и сравнивать не придется разные виды написания, текст будет всегда в нижнем.
Для подобного смешивания должно быть так:
if a == "красный" and b == "синий" or a == "синий" and b == "красный":
print("Ваш вторичный цвет: Фиолетовый.")
Можно расставить скобки, ни на что не повлияет, просто визуально понятно будет что происходит.
if (a == "красный" and b == "синий") or (a == "синий" and b == "красный"):
Можно сказать, что фиолетовый получается, если
(a = красный И b = синий) ИЛИ ЕСЛИ (a = синий И b = красный)
и читается в принципе нормально, сразу понятно что проиходит. Если в подобный вид привести изначальный код, то будет
if a == "Красный" or "красный" b == "Синий" or "синий" or a == "Синий" or "синий" b == "Красный" or "красный":
a = Красный ИЛИ красный b = Синий ИЛИ синий ИЛИ a = Синий ИЛИ синий b = Красный ИЛИ красный
Ничего не понятно даже человеку, компьютер так вообще жалко
Исправляйте, изучайте
https://pythontutor.ru/lessons/ifelse/