Кстати, вот это интересно - это какая нибудь ZCF?
Нет, это исчисление предикатов.
flag будет иметь значение False
Потому что у вас неправильный код. Правильный такой:
dino = [] # а не NULL, у нас же нет динозавров, а не один неправильный динозавр
flag = True
for d in dino:
flag = flag and isGreenBlue(d)
Стандартный способ, как проверить, что все элементы в массиве удовлетворяют какому-то условию: инициализируем флаг истиной, после чего, если находим в массиве не удовлетворяющий условию элемент, пишет в флаг ложь.