Please use code tags when posting execution plans! This preserves the original formatting. It's tricky to figure out how everything lines up without this.
Anyway, onto your questions:
1. Yes, push predicates can take place. You can see it's happened in your query from the following line:
VIEW PUSHED PREDICATE VW_SQ_1
2. Rownum prevents Oracle unnesting subqueries:
"The optimizer can unnest most subqueries, with some exceptions. Those exceptions include hierarchical subqueries and subqueries that contain a
ROWNUM pseudocolumn, one of the set operators, a nested aggregate function, or a correlated reference to a query block that is not the immediate outer query block of the subquery"
Emphasis mine:
http://docs.oracle.com/cd/E11882_01/server.112/e41084/queries008.htm#SQLRF52358 This can stop the optimizer rewriting your query in a better way. For more details on unnesting see:
https://blogs.oracle.com/optimizer/entry/optimizer_transformations_subquery_unesting_part_1 In general adding "rownum = 1" to exists subqueries is unnecessary. This restricts optimizer paths.