There are two settings regarding the underscore interpretation.
The Remove underscores setting removes all underscore from the name. For example, if your database table is named Inv_Invoice, the generated persistent class will be InvInvoice.
However, if you specify for a prefix or suffix underscore ("_"), and this setting is checked, the underscore won't be removed.
The idea behind Interpret underscore as word delimiter is the following: in cases when a table contains underscores usually they are used to divide the words in the name, for instance Order_Details. Usually this Interpret underscore as word delimiter option is used together with the CamelCase or PascalCase modes where each word in the name should begin with a capital letter. Having this in mind, by default Order_Details would be considered one word. So by enabling this option you claim that the underscore character are not part of the words but are their delimiters and Order_Details are two words. At the end, if this option is enabled and PascalCase or CamelCase mode is selected, the end result should be OrderDetail as a class name, instead of Orderdetail or Order_detail.