FlyingFlying is an evasion ability.
A creature with flying can’t be blocked except by creatures with flying and/or reach. A creature with flying can block a creature with or without flying. (See rule 509, “Declare Blockers Step,” and rule 702.17, “Reach.”)
Multiple instances of flying on the same creature are redundant. (CR 702.9)
HauntHaunt is a triggered ability. “Haunt” on a permanent means “When this permanent is put into a graveyard from the battlefield, exile it haunting target creature.” “Haunt” on an instant or sorcery spell means “When this spell is put into a graveyard during its resolution, exile it haunting target creature.”
Cards that are in the exile zone as the result of a haunt ability “haunt” the creature targeted by that ability. The phrase “creature it haunts” refers to the object targeted by the haunt ability, regardless of whether or not that object is still a creature.
Triggered abilities of cards with haunt that refer to the haunted creature can trigger in the exile zone. (CR 702.55) (When this creature
diesIs put into a graveyard from the battlefield. (CR 700.4),
exileTo exile an object, move it to the exile zone from wherever it is. See rule 406, “Exile.” (CR 701.13) it haunting target creature.)
When this creature enters or the creature it haunts
diesIs put into a graveyard from the battlefield. (CR 700.4), each other creature has base power and toughness 1/1 until end of turn.