Basically one of these lets you listen to/watch a lot of formats:
- mplayer along with it's codecs ("all" presumably)
- xine with it's "extracodecs" (known as "libxine-extracodecs" or "xinelibs-extras" or equivalent)
- gstreamer with it's plugin packages (gstreamer-plugins-ugly, -bad, -good etc.)
There's no use installing all of them, one is enough, and in case of xine or gstreamer they both can probably be used for a chosen front-end (totem for example), so it's basically up to you throwing a coin to choose. I'd pick a front-end, then see what backends work with it (usually either xine or gstreamer does) and install that backend, then add the codecs/plugins it supports. Mplayer's user interfaces are ugly if you ask me, but that's a personal opinion so no offence
Then there are some formats (like those a lot of cellphones are using for audio, for example) that don't necessarily play with the stuff mentioned above. In that case one usually either needs to locate a special decoder for a given engine, if it exists, or add another player for that format -- which, if you ask me, is stupid, because the idea of having a separate backend and a frontend is to be able to use only one player (front-end) to do the job.
I never got 3gps working, I had to install several decoder-encoders and finally found one that was able to decode and re-encode it to another format. Maybe it was my bad luck..