Sua consulta está definida para obter postagens dos últimos 20 minutos, se você quiser hoje, exceto os últimos 20 minutos, use
data < DATE_SUB( NOW( ) , INTERVAL 20
MINUTE )
e não maior que. A segunda parte (a partir de hoje) pode ser feita com curdate() função:
CURDATE() = DATE(data)
e juntos:
SELECT id, titulo
FROM posts WHERE
data < DATE_SUB( NOW( ) , INTERVAL 20 MINUTE )
AND
CURDATE() = DATE(data)
ORDER BY RAND( )