The WHERE clause is evaluated for each row. If it evaluates to TRUE, then the row is delivered by the SELECT.
Therefore, the first statement will deliver all the rows; the second will deliver none, thereby resulting in an empty resultset.
(Actually the optimizer will throw away WHERE TRUE and simply do "SELECT * FROM test;" for the first one. For the second, it will optimize away the entire statement.)
Using my 2-row table `dbl`, I see that EXPLAIN says:
mysql> EXPLAIN select * from dbl where true;
+----+-------------+-------+------+---------------+------+---------+------+------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+------+------+-------+
| 1 | SIMPLE | dbl | ALL | NULL | NULL | NULL | NULL | 2 | NULL |
+----+-------------+-------+------+---------------+------+---------+------+------+-------+
1 row in set (0.00 sec)
mysql> EXPLAIN select * from dbl where false;
+----+-------------+-------+------+---------------+------+---------+------+------+------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+------+------+------------------+
| 1 | SIMPLE | NULL | NULL | NULL | NULL | NULL | NULL | NULL | Impossible WHERE |
+----+-------------+-------+------+---------------+------+---------+------+------+------------------+
1 row in set (0.00 sec)
The first says it will look at All rows.
The second says "Impossible WHERE", implying that it is always FALSE, so no rows will be fetched; furthermore it even does not bother touching the table (= NULL).
Have I answered your question? Or was there something deeper in it?