Why does Oracle yield multiple levels per row in this hierarchical query?
You're getting many rows because without START WITH it outputs all possible hierarchies .  You see 1 reports 2 on level 1 (1->2), and another one on level 2 (1->2->NULL).   Adding  SYS_CONNECT_BY_PATH(reports_to, '/') "Path" to select will help in visualizing that.
Let's connect just 2 rows for illustration: 

with test1 as 
(
select 1 as employee_id, 2 as reports_to from dual
union all 
select 2 as employee_id, NULL as reports_to from dual


)
select employee_id,reports_to ,level ,SYS_CONNECT_BY_PATH(NVL(to_char(reports_to),'NULL'), '/') "Path"

from test1 
--start with employee_id=2
connect by prior employee_id  =reports_to;


will output :  

Employee    ReportTo   Level Path
1              2        1     /2  
2              &lt;null&gt;   1     /NULL  
1              2        2     /NULL/2  


If we uncomment "start with" , the result will be   

2   &lt;null&gt;  1   /NULL
1      2    2   /NULL/2