How does the optimizer in Oracle Database use I/O statistics?
You can see currently used statistics in SYS.AUX_STATS$. 
DBMS_STATS.GATHER_SYSTEM_STATS collects system statistics. Running it with gathering_mode='NOWORKLOAD' will capture IO related stats of the server. You usually also run it under workload ("START/STOP", "INTERVAL").   
(4,5)  Collecting system statistics during typical load should take care of potential problems you mentioned. 
In addition , (4) will be affected by optimizer mode (ALL_ROWS vs FIRST_ROWS)  


Also, with procedures in dbms_stats packages it's possible to collect stats multiple times, export (EXPORT_SYSTEM_STATS ), import (EXPORT_SYSTEM_STATS), or delete it (DELETE_SYSTEM_STATS).