How would I store the result of a select statement so that I can reuse the results to join to different tables?
You may store the results you want to reuse into a nested table type. In the following example, I use a nested table of number(22,0). A nested table in PL/SQL is not a real table, it just exists in memory like an array.

-- Creating some test tables and data
create table table1 (row_id number(22,0));
create table table2 (row_id number(22,0));

insert into table1 values(1);
insert into table1 values(2);
insert into table1 values(3);
insert into table2 values(1);
insert into table2 values(2);

---------

-- Create a nested table type
CREATE OR REPLACE TYPE type_table_number AS TABLE OF NUMBER(22);

declare
 v_tab type_table_number;
 cursor c is
   select row_id
   from   table2
   where  row_id in (SELECT row_id FROM TABLE (v_tab));
begin
  -- Select row_ids into the table v_tab
  -- (this is not a real table, the data is stored in memory)
  select row_id
  bulk   collect into v_tab
  from   table1
  WHERE  row_id in (1,2);
  -- Select some data from a table and use the content
  -- of the in memory table (v_tab) as search criteria:
  for v_rec in c loop
    DBMS_OUTPUT.PUT_LINE(v_rec.row_id);
  end loop;
  -- Select some other data from another table and also
  -- use the same content of the in memory table:
  -- ...
END;
/