It helps to know that in the data_dictionary, object names are all stored capitalized; unless you use the quoted identifier to specifically tell oracle "hey, we wan't this objects name to be case sensitive" or in other words, "create this table with this literal name"
Below - create a table named bar, you can select using 'from bar', 'from BaR', 'from BAR'. 'from "bar"' wouldn't work because you are saying to oracle "give me the results from the table literally named lowercase "bar".
create a table named "bar", you can only select from it using 'from "bar"'. This is because 'from bar' translates to 'from BAR'.
SQL> create table bar (x varchar2(1));
Table created.
SQL>
SQL> select * from bar;
no rows selected
SQL> select * from BAR;
no rows selected
SQL> select * from "bar";
select * from "bar"
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> select * from "BAR";
no rows selected
SQL>
SQL> drop table bar;
Table dropped.
SQL>
SQL> create table "bar" (x varchar2(1));
Table created.
SQL>
SQL> select * from bar;
select * from bar
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> select * from BAR;
select * from BAR
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> select * from "bar";
no rows selected
SQL> select * from "BAR";
select * from "BAR"
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL>
SQL> drop table "bar";
Table dropped.
SQL> spool off