During database updates the schema of any module could be out of date I try to well understand Update versions API functions.
I globally understand the concept, but I have some doubt.

In fact Drupal makes no verification about the N version number use in the name of a simplified function _update_N_mymodule_my_function(). N can be what ever we want (even a string) ? 
More, even the whole name of function can be named in fact e.g "toto()" ? Drupal makes no verification, and names used for functions simplified are just for convenience. Correct ?
No, that is not correct. You cannot use a string as update version for a update hook, or Drupal will not recognize it as update hook.
For the other functions that aren't hook, Drupal doesn't check their name follow a schema, since Drupal is not going to call them. The only non-hook functions Drupal calls are those functions referred in some data structure returned to Drupal, or those functions whose names match a form ID followed by _validate or _submit, which could be used as form validation or submission handlers.

See the code executed from drupal_get_schema_versions(), in particular the following one.

// Prepare regular expression to match all possible defined hook_update_N().
$regexp = '/^(?P&lt;module&gt;.+)_update_(?P&lt;version&gt;\d+)$/';
$functions = get_defined_functions();
// Narrow this down to functions ending with an integer, since all
// hook_update_N() functions end this way, and there are other
// possible functions which match '_update_'. We use preg_grep() here
// instead of foreaching through all defined functions, since the loop
// through all PHP functions can take significant page execution time
// and this function is called on every administrative page via
// system_requirements().
foreach (preg_grep('/_\d+$/', $functions['user']) as $function) {
  // If this function is a module update function, add it to the list of
  // module updates.
  if (preg_match($regexp, $function, $matches)) {
    $updates[$matches['module']][] = $matches['version'];
  }
}


A function name like mymodule_update_toto() would not match /_\d+$/, so it would be discarded immediately; a function name like mymodule_test_001() would not match /^(?P&lt;module&gt;.+)_update_(?P&lt;version&gt;\d+)$/, so it would be discarded on the second round.
The same is true for a function name like _update_N_mymodule_my_function(): Since it doesn't end with a number, it would be discarded at the first round. _update_mymodule_my_function_N() would be discarded on the second round, since _update_ is no after the module name (so it doesn't match /^(?P&lt;module&gt;.+)_update_(?P&lt;version&gt;\d+)$/).