El SQL dinámico no puede ver su variable PL/SQL:debe pasarle una cadena que se pueda ejecutar en el ámbito del motor SQL. Por lo tanto, debe concatenar el nombre de la tabla con el texto repetitivo de la instrucción:
query1 := 'SELECT max(c) FROM ' || variable_name;
También debe devolver el resultado de la consulta en una variable.
Así es como funciona (he quitado parte del código innecesario de tu ejemplo):
DECLARE
c_table VARCHAR2(40);
c_obj VARCHAR2(20);
BEGIN
for lrec in ( select a as tab_name from A )
LOOP
EXECUTE IMMEDIATE 'SELECT max(object_ref) FROM ' || lrec.tab_name
into c_obj ;
dbms_output.put_line('Maximum value: '|| lrec.tab_name
|| '='|| c_obj);
END LOOP;
END;