Difference between Handler_write and Innodb_data_writes Handler write is the number of requests to insert a row in a table.
InnoDB data writes is the total number of data writes.

Questions are


Does inserting a row count as a disk write? 
If I do an insert operation in MYISaM engine which will get incremented?
If I do an insert operation in InnoDB engine which will get incremented?
If Handler_write is the number request to insert a row then why does it gets incremented every-time I run select queries.

mysql&gt; select VARIABLE_VALUE as value from information_schema.GLOBAL_STATUS WHERE VARIABLE_NAME="Handler_write";
+--------+
| value  |
+--------+
| 195556 |
+--------+
1 row in set (0.00 sec)

mysql&gt; select VARIABLE_VALUE as value from information_schema.GLOBAL_STATUS WHERE VARIABLE_NAME="Handler_write";
+--------+
| value  |
+--------+
| 195557 |
+--------+
1 row in set (0.00 sec)

mysql&gt; select VARIABLE_VALUE as value from information_schema.GLOBAL_STATUS WHERE VARIABLE_NAME="Handler_write";
+--------+
| value  |
+--------+
| 195558 |
+--------+
1 row in set (0.00 sec)
A "write" is distinct from a "disk write".

Writes include writes to tmp tables.

This pattern avoids having to do subtracts (for Handler%, not for Innodb%):

FLUSH STATUS;
perform some query;
SHOW SESSION STATUS LIKE 'Handler%';


Innodb_% values are only GLOBAL; Handler% are SESSION, then added to the GLOBAL tallies.

Handler% is done at an engine-agnostic level; Innodb% is done in the InnoDB engine.  (This should answer you engine questions, but I have not double checked.)

Fraction of read requests that had to hit disk =
  Innodb_buffer_pool_reads / Innodb_buffer_pool_read_requests
Possibly the numerator needs to be Innodb_pages_read or Innodb_data_reads.

Sorry that I don't have answers to all your questions.