The big ones are Twine, ChoiceScript, and AXMA. Most everyone uses Twine, to be honest. Pretty much any hypertext engine worth its salt can do what you’re asking for since those are really basic features.
ChoiceScript is really simple but heavily opinionated. It’s pretty difficult to break the mold that they put you in, so nearly every game looks identical. However, the scripting is really easy to learn and does most everything you need for a game of that type. There’s also a ton of support for it on its official forums. It’s also the only one of the three that provides a way of getting your game published, if that’s a route you want to go.
Twine has varying levels of customization depending on which story format you use (there are four official ones to choose from, and a few other ones made by users). The scripting can be pretty complex, but it’s a really feature filled. The SugarCube storyformat goes above and beyond providing functionality for high level features like movies and music and general scripting features.
AXMA is really similar to Twine. The styling is a bit different but it’s pretty close. To be honest, I don’t know that much about this one so I can’t comment much further than that, but it seems like a nice development system.
A runner up to these three is Ink, but it doesn’t have a very good save system for the HTML version (you have to rely on one that I made, one that’s currently being added to the official project, or make your own). That’s it’s major drawback. Otherwise I would recommend it along with the others since I really like its syntax.
There are also two styles of hypertext games: choice based or passage based. You can make a passage based game act like a choice based one with a bit of work, but it’s difficult to get a choice based one to act like a passage based one.
To clarify, a choice based game is written something like this:
* choice 1
You picked choice one! Nice!
* choice 2
You picked choice two.. That's too base.
Rest of the conversation continues here.
Passage based is like this (each ::
section is a passage and the display of text ends at the bottom of it, so each passage should be considering its own page of text):
:: start
Should I go left or right?
[[Go Left->left]] [[Go Right->right]]
:: left
You went left.
:: right
You went right.
ChoiceScript and Ink are both choice based. Twine and AXMA are passage based. Whichever one is best for you is up to how you want to present the story.
There’s also my own engine (Sadako) that I’m working on which is actually is both a choice based engine and a passage based engine, and while it’s more than capable of doing what you need, it’s still in development and I think I’m literally the only one using it. So it really fails the last two criteria. Heh.
Anyway… here are some links:
Twine
ChoiceScript
AXMA
Ink
Sadako