Yes, you can indeed create several indexes for the same column, just as you've done. I have no idea why it does not work for you. Outdated MySQL version? Or using a new one containing a bug?
ALso, the primary key can be multicolumn, and if it's not, there is no point in adding it to a multicolumn index for the queries you are executing above, since the primary key is always unique. Consider:
SELECT total_number FROM weblinks where id='$id'
This ALWAYS retrieves either 1 or 0 rows. If the id exists, it exists only once, and then you get 1 row.
So
SELECT total_number FROM weblinks where id='$id' AND lots="of other things" AND then="some more things"
Will use the index for the primary key, find one row and then check the other where constraints to see if the row should be returned in the result set.
Execute this statement (once you have all your indices up), and replace 999 with an id that actually has activated=1 and adult=0
EXPLAIN SELECT id FROM weblinks WHERE id=999 and activated=1 and adult=0
Possible keys: primary, id, id_2
key: primary
Which tells you that the multicolumn indexing is pointless.
However, if you need to do range checks, it can be beneficial
EXPLAIN SELECT id FROM weblinks WHERE id<5000 and activated=1 and adult=0
possible keys: primary, id, id_2
key: id_2
And now there was finally a use for the index id_2
The point is, don't create an index unless it will actually be used (and then it is still sometimes better to not have it).