Yeah, Inform, both Inform 6 and now Inform 7, is more or less the de-facto standard IF language. It's probably a decent place to start, and there is a ton of information available about it and libraries. Also, recently, a good book on it: http://www.amazon.com/dp/1435455061/

The main thing systems like Inform added over really old-style IF was more explicit modeling. An old-school way of doing things would be to write lots of chunks of text, parsers, code that causes things to happen, etc.; to the extent a world really exists, it's only because all the stuff you've thrown in is consistent with each other, the same way a world exists in a novel. Systems like Inform, instead, add an explicit declarative model of a world; there are objects with properties and locations, possible actions with preconditions and effects, containers and reachability, etc. A lot of the action and text is then attached to that model, and interactions and output are partly generated from it.

One thing still hardcoded in that model is style. The fact that a car is in the room with you and visible to you is explicitly modeled (not just buried in a canned snippet of text), but the style of how that's presented to you isn't explicitly modeled. Is it a matter-of-fact "There is a car here", some kind of dramatic gothic description, a vague offhand description, etc., etc.? The way to control that in standard IF is by attaching canned text snippets to different events. If you want style to change based on gameplay events, you write multiple canned text snippets and then write code to swap them in and out. And of course just informing the user of an object is one of the simpler kinds of output, so it gets more complex if you want to change style for, say, ongoing action, or want to present things in other than strictly this-is-happening-at-present narrative order, etc. You end up with tons of hacks like: an event happened now in the world model but we want to tell it to the player later as a flashback, so suppress the normal output and set this flag, then attach a callback to some other event that will replay the tell-about-this code later when we want it.

The main new thing Curveship adds to that is an explicit model of narration. It's motivated by a view in narratology (a sort of formalist variety of literary theory) that narratives are composed of an abstract "what really happened" component plus a narrational "how I am telling the reader about what happened" component. Since IF systems only have the first explicitly, Curveship adds the second too. From an older blog post (http://nickm.com/post/2009/07/introducing-curveship/):

Curveship is an interactive fiction development system that provides a model of a physical world, and its workings, as do existing state-of-the-art IF systems (such as Inform 6, Inform 7, TADS 2, and TADS 3). It will not have as many libraries, and will have no multimedia features, when it is released, but it will provide another significant capability: it will allow IF authors to write programs that manipulate the telling of the story (the way actions are represented and items are described) as easily as the state of the IF world can now be changed. While existing IF systems allow for the simulation of a character who can move around and change the state of the world, Curveship provides for control over the narrator, who can tell as if present at the events or as if looking back on them, who can tell events out of order, creating flashbacks or narrating what happens by category, and who can focalize any character, not just a fixed PC or a hard-coded series of them, to tell the story from the perspective of that character’s knowledge and perceptions.

Disclaimer: I haven't really played with Curveship to have any idea of how usable it is; I only know about it from papers and talks (I'm in a sort of related field, more AI-ish and less literary, but his papers show up at venues I care about). Montfort is a really smart guy and probably one of the top few IF experts in the world, though, so it's probably worth checking out if you like these sorts of things.