I am in the devlopment of an entire commercial-release 2d platform engine, and i will tell you a little of the way we are going to implement such a level.
We will use a number of image levels - a couple of background layers (one for fixed image; one for passing, animated objects, e.g. birds, clouds or stars), a main level(for the bit our character walks on), characters and enemies layer, a foreground layer(for vegetation etc.) and an on-top text layer (for scores etc.). We will be using polygonal collision, as in the good old sonic games. This means we have invisible, 2d polygons on top of our sprite levels, that move with the position of the main level layer. I have scoured the net and found a point-in-polygon source snippet from underwaredesign.com, but i have obviously heavily modified it for my engine.
Sprites are easy to control through the level, and you can make sliding speed variables using the curvevalue() command - much easier than fiddling with sin() values.
For our characters, we have developed a specific format for laying out the characters in grid squares 60x60 pixels. This gives us enough flexibility for different characters to be imported into our engine.
You will also need to make a level editor to do such a game. I suggest that you take a look at my blog over the next few weeks to see how you can make an engine and editor.
http://www.dbgame.blogspot.com!
visit http://dbgame.blogspot.com on how to make a commercial-level game engine