They are completely different. The first one adds a single index which indexes id1 and id2 (in that order). The second one adds two independent indexes.
When fetching results from a single table query, only one index may be used as the "main index". This is chosen on a basis of the one which matches the largest amount of the query, and some other factors (e.g. if ORDER BY was used).
So if you had an index on id1 and id2, and you said
SELECT cols FROM user WHERE id1=1 AND id2=2
Then it could efficiently find the row(s) by an index range scan.
Whereas, if you had two independent indexes, it would have to pick one of them, do a range scan, and then discard rows where the rest of the WHERE clause didn't apply.
Try it on some test tables and use EXPLAIN.
Try inserting 1,000,000 rows of random data and time it with different queries and combinations of indexes (on an otherwise idle machine, disabling query cache of course).
Mark