"Merging" grouped rows (column-wise, picking the first non-null value, ordered by another column)
You can use the FIRST_VALUE analytic function for this:

select distinct
  record_group,
  first_value(col_a ignore nulls) over
    (partition by record_group order by record_level
      rows between unbounded preceding and unbounded following) as col_a,
  first_value(col_b ignore nulls) over 
    (partition by record_group order by record_level
      rows between unbounded preceding and unbounded following) as col_b,
  first_value(col_c ignore nulls) over
    (partition by record_group order by record_level
      rows between unbounded preceding and unbounded following) as col_c
from
  tbl_record
order by
  record_group
;

RECORD_GROUP         COL_A                     COL_B COL_C              
-------------------- -------------------- ---------- --------------------
group1               foo2                          0 bar1                
group2               foo3                          5 bar4                
group3               foo6                          1  


We find the first value (FIRST_VALUE) for each row, ignore nulls (ignore nulls), for the current record_group "partition/group" (partition by record_group), for the whole "partition/group" (rows between unbounded preceding and unbounded following) based on the order of record_level (order by record_level), and get rid of the duplicate rows with DISTINCT.