.x is tailormade for game importing. It supports animation which is crucial for dynamic objects.
.3ds was the first format by Autodesk which was made for transferring between different modeling programs (which it does fairly well because its a pretty universal format).
.obj was made for archiving models
^A plugin made for commonly used browsers has been made to display .obj in the browser
http://www.3dmlw.com/
Notes:
3ds: Doesnt support accurate vertex normals.
3ds: Maximum vert and polygon count is 65536
3ds: Must be converted to triangles before export(autoconverted)
Obj: No compression
Obj: Supports Higher level polygons. (Quads,Quints,etc...)
Obj: Can hold multiple named objects
Following taken from:
http://www.toymaker.info/Games/html/3d_models.html
What is the .x file format?
This is a Microsoft model format for use with DirectX 9. Its not the most simple format and it is probably not the best. Normally when writing a game you will define your own format and use the 3DS Max SDK (or other modelling package) to create your own exporter. However the .x format allows you to quickly get objects loaded. The advantages of using .x are that there are exporters for Max and other packages and DirectX has a number of helper functions for working with the loaded mesh data. Note that DirectX 10 and 11 do not contain support for .x files directly, instead they use a sdkmesh format that they provide functions for and a tool to convert from .x or .obj to.
I hope this helped.