На данный момент ObjectManager не очень совместим с geoQuery(
То есть geoQuery может принять на вход описания объектов из ObjectManager, но он по факту создает новые объекты типа ymaps.GeoObject и дальше оперирует ими
Правильнее будет взять видимую область карты через getBounds, и потом понять, какие объекты попадают в эту область просто используя max/min
По поводу п. 2. Вам надо получить оверлеи объектов, которые сгенерировал ObjectManager, а вы работаете там по сути с объектами, которые внутри себя сгенерировал geoQuery