what are the consequences of altering the users schema? I was tasked with altering the signature/signature format and make the length larger than 255. Within the given time, I had to alter the table using hook_schema_alter, db_change_field and hook_update. While I am aware this is semi hacking, I want to know what if this could have a huge consequence on my website.
For your case, as you are just altering a field's length, without adding new fields, or new indexes, the only problem could be code that handles the same field, and which uses an hardcoded value for its length. That could be code executed from a third-party module, or a future version of Drupal.
For example, user_validate_name(), the function that is used to validate the username entered during the account registration, or when the user account is edited, uses the following code.

if (drupal_strlen($name) &gt; USERNAME_MAX_LENGTH) {
  return t('The username %name is too long: it must be %max characters or less.', array('%name' =&gt; $name, '%max' =&gt; USERNAME_MAX_LENGTH));
}


If a module alters the database field containing the username to make it bigger, Drupal would still throw an error when the username length is higher than USERNAME_MAX_LENGTH (actually 60, also in Drupal 8).

The reason why altering a database table defined from a module is not something suggested to do is that it would cause problems when more than one module do that for the same field.   Imagine what would happen if a module increases the length of the signature field to 350, and another module changes it to 300.
The other problem is when the modules are uninstalled. Which size would the field get when one of the modules is uninstalled? If modules remember the size the field had before they were installed, there would be a problem when modules are uninstalled in an order that is different from the installation one. If modules restore the field size to the original one, that would cause a problem when only one module changing the field is uninstalled.

In the case a module adds a new field, there could be some performance issues if the module doesn't introduce an index. If the module introduces an index for the added field, there could be errors with the SQL queries used from the module that introduced the database table; if then those queries are not dynamic, it would not be possible for the module that added the field to alter them.