The gunman, believed to be between 30 and 50 years old, was cornered with the hostages in a second-floor classroom and released four of them, one by one.
The man started talking to negotiators and gave them a deadline of 4 p.m., reported CBS News affiliate KCNC.
Park County Sheriff Fred Wegener said authorities decided to enter the school to save the two remaining hostages after the suspect cut off negotiations and set a deadline. He said the suspect had threatened the girls throughout the four-hour ordeal and had shielded himself with the hostages.
The gunman was not immediately identified, and the sheriff was at a loss to explain a motive.
"I don't know why he wanted to do this," Wegener said, his voice breaking.
After the suspect entered the building, hundreds of students at Platte Canyon High School were evacuated in a scene that recalled the horror at Columbine just a short drive away.
Students said the bearded suspect wore a dark blue hooded sweatshirt and a camouflage backpack. The sheriff said the man threatened to set off a bomb he claimed to have in the backpack. The man was also toting a handgun.
Authorities had what they described as "sporadic" negotiations with the suspect and urged him to contact them for more discussion. Officers eventually crept close to the building, and there were reports of an explosion inside.
A short time later, someone wheeled a gurney inside and took an unidentified person to a medical helicopter parked on the school's football field.
Lynn Bigham, who described herself as a family friend of a wounded hostage, said the girl had just turned 16.
"I think she's very strong, I've been praying she'll be OK," she said. "She's real bubbly. Every time you see her she gives you a hug."
The last hostage was unharmed and talking with authorities.
The sight of students fleeing the high school in long lines, and of frantic parents scrambling to find their children, evoked memories of the 1999 attack on Columbine High School, where two students killed 13 people before committing suicide.
Students described a chaotic scene inside after the intercom announced "code white" and everyone was told to stay in their classrooms. The high school and a nearby middle school were evacuated. Jefferson County authorities — who also handled the attack at Columbine — sent a bomb squad and SWAT team to the high school.
"I'm just terrified. I'm terrified," said Sherry Husen, whose son plays on the high school football team and was told not to return to school from his part-time job. "I know so many kids in that school."
Students from the two evacuated schools were taken to an elementary school for a head count. Ambulances were parked in the end zone of the school's football field, and a tank-like SWAT team vehicle was parked nearby on a closed highway.