I've had 3 ways of working thi things out.
1 - Using color collision. Basically you have 2 maps, the one the player sees, and a collision map, which is a greyscalled map of the original and filled with bright colors, each representing a different type of collision. AS the player moves, it's coordinates are checked in the collision map as what color is beneath it, and so work out it's collision effect, and so on...
2- Tile based collision. The scenary is built from tiles, and each tile has a certain number on a data sheet. The numbers represent the type of collision, and so on...
3- A mix up of Tile and Color collision. It's like the tyle set, but instead of numbers on a data sheet, each tile has it's own collision tile, and so you build both, the main map (with the original tiles) and the collision map(with the collision tiles), and so work out just as the color collision.
Advantages (as far as i know):
1- Easy to understand, and you can practically see where collisions are and everything. Very much freedom in doing the collision set.
2- You save on collision maps, so you save both size of the game and resources it needs.
3- You save on collision maps, so you save both size of the game and resources it needs, not as much as 2 , but MUCH better than 1 . Another thing is that you can do tiles with, let's say, half collision on it (ex. spikes and so on, those that do not use all the size of the tile)
Disadvantages :
1- Quite buggy if not followed a strict format, and consumes lots of resources and game size.
2- Very hard to see the level and its collisions. Half used tiles won't work well, unless you specify a certain number for a half collision tile.
3- not sure
Not sure if all of this is quite accurate, but might give you an idea of what to do, or what path to follow...