На самом деле тут есть нюансы, это не просто синонимы, как многие думают.
Флаг - символ, который тиражируется, Флаг страны, например, может висеть на каждом углу.
Знамя - изготовляется в единственном экземпляре, например - знамя полка.
Стяг в старину - просто жердь без полотнища, вокруг которой собирались (стягивались) ратники.
Позже к жерди добавилось полотно с изображением какого-нибудь святого - знамение - оттуда и появилось знамя.
Собраться под знамёна - под знамением.
А вот цвета на флагах в геральдике, со слов главного герольдмейстера России Георгия Вилинбахова, ничего особенного не значат, что бы им не приписывали.