Flower

Flowers are a type of plant in Minecraft. While they can be planted on grass and dirt blocks, flowers cannot be cultivated like trees, sugar cane, or crops. They appear to spawn in clusters randomly on grass tiles. Flowers served no useful purpose except for decoration until Beta 1.2, when it became possible to make Wool Dyes out of them.

To survive, they must be planted on a grass or dirt block that either does not have a block any altitude above it to obstruct sun/moonlight, or is lit with at least a light level of 8. If neither of these conditions exist, the flower will quickly pop out.

Even in a biome covered with snow, flowers will generate on dirt blocks.

Dandelion
Yellow flowers can be collected in one hit and placed in a crafting grid to create 2 units of Dandelion Yellow dye.

Rose
Roses can be collected in one hit and placed in a crafting grid to create 2 units of Rose Red dye. They are also somewhat rarer than yellow flowers; usually being alone or in groups of 3-4.

Trivia

 * On SMP, placing a flower on a stone block with a thin snow block would plant the flower as if the stone were grass.
 * Due to the nature of their spawning algorithm, it is possible (but relatively rare) to find naturally spawned flowers in lava caverns.
 * In Minecraft Classic, flowers can be placed on all block types, including lava and on top of each other.