Good set of tips, however "Not NOT IN" is not true in general, as a single counterexample:
EXPLAIN (costs off)
SELECT relname, relpages
FROM pg_class
WHERE relname IN ('pg_class');
QUERY PLAN
---------------------------------------------------------
Index Scan using pg_class_relname_nsp_index on pg_class
Index Cond: (relname = 'pg_class'::name)
(2 rows)
In general, I'd like to echo other's comments, learning how to use EXPLAIN and how to interpret query plans is the single most important tool, as it allows you to verify your hypothesis instead of relying on rules-of-thumb.