Check the following link for some examples that should clarify the difference between them:
http://technet.microsoft.com/en-us/library/ms175064.aspx
IN
only tests for equality, while ALL/ANY/SOME
can test against any of the comparison operators.
Here is a sample SQL Fiddle.
-- SQL 2012
CREATE TABLE T1 (ID int) ;
INSERT T1 VALUES (1) ;
INSERT T1 VALUES (2) ;
INSERT T1 VALUES (3) ;
INSERT T1 VALUES (4) ;
SELECT CASE WHEN 3 IN (SELECT id FROM t1) THEN 'in true' ELSE 'in false' END
UNION
SELECT CASE WHEN 3 < SOME (SELECT id FROM t1) THEN 'some true' ELSE 'some false' END
UNION
SELECT CASE WHEN 3 < ANY (SELECT id FROM t1) THEN 'any true' ELSE 'any false' END
UNION
SELECT CASE WHEN 3 < ALL (SELECT id FROM t1) THEN 'all true' ELSE 'all false' END;
/* Returns
all false
any true
in true
some true
*/