Arlindo
Keep in mind that when looking at the real work done physically on a DB, all changes and handling are page-based. Not only that row is modified, but the adjacent rows in the very same page are rewritten too. There are some caching and smarter handlings, but its up to the database management system to even write a whole page just because of one row, if a transaction is definied to do so.
About DELETE. There is a standard behavior that new developers (and some old ones) doesnt know. Rows are not physically deleted (just as the majority of the filesystems available today). They are logically marked as free. Check out the link below
So, the "better performing and storage wise procedure" is to delete all the rows in a given page. This will mark the page as free.
Some answers are done in the link below for what happens when specific cases happen.Beyond that, unfortunately you may need to go to C code reading for some stuff, but the guy who originally wrote InnoDB answered them
And lastly, go look over other RDBMs way of dealing with this stuff. You sure learn the tradeoffs that involves them