A flag (aka feature flag, toggle, switch etc) represents a particular point in code which when evaluated determines the state of a feature. Flags hold different variations (i.e. on/off, true/false, A/B/C), which are only revealed upon evaluation.
You may want to reveal one variation to a particular set of users (aka segment) and a different variation to another segment. Flags allow control over the lifecycle of a particular feature. They are also a critical requirement to enable experimentation (e.g. A/B testing).