La tua query interna è una sottoquery correlata, ma non può affatto vedere table1. Questa è una restrizione su MySQL - vedere Manuale MySQL - D. 3. Restrizioni alle sottoquery . Circa a metà dice:
Sebbene la sottoquery faccia parte di un'espressione LEFT JOIN, questa fa parte della clausola FROM.
Questa riformulazione potrebbe fare al caso tuo:
SELECT table1.id,
(SELECT COUNT(*)
FROM table2
WHERE table2.lt > table1.lt
AND table2.rt < table1.rt) AS cnt
FROM table1;