Algoran:
Los enteros INT son de longitud fija porque ocupan una cantidad de bytes (4 para ser exactos) suficientes para contener todos los valores desde -2147483648 hasta 2147483647, salvo que uses la opción UNSIGNED, con lo que descartas el uso de negativos y aprovechas los 4 bytes para contener enteros positivos de 0 a 4294967295.
Las longitudes exactas en bytes de los distintos campos están en http://dev.mysql.com/doc/refman/5.0/es/storage-requirements.html
Hay muy buena información sobre los tipos de datos en el Capítulo 11 del manual MySQL: http://dev.mysql.com/doc/refman/5.0/es/column-types.html Te dejo el enlace no porque no quiera responder, sino porque, si deseas información en general, lo que respondiera sería un resumen de lo que allí dice. Y es bueno que conozcas ese capítulo porque brinda información valiosa, desde lo básico hasta dudas avanzadas. Hasta diría que es apasionante.
Yo generalmente utilizo con más frecuencia los siguientes tipos de campos:
INT para valores enteros
BYTE cuando sabía que usaría enteros positivos entre 0 y 255
DECIMAL para importes monetarios.
DOUBLE para números con varios decimales (no he tenido que usar más de 6 hasta el momento)
DATE para fechas (no me interesa la hora, sino utilizaría DATETIME)
VARCHAR para cadenas alfanuméricas, indicando la longitud máxima. Ej: VARCHAR(60)
TEXT para campos de observaciones
Cada motor de bases de datos responde de diferente manera a las condiciones de trabajo. Con "Condiciones de trabajo" quiero decir si habrá más números que alfanuméricos, si se almacenarán grandes cantidades de texto, si usarás transacciones o no, si se escribirá inmediatamente en disco o manejarán buffers en memoria, etc. Cada servidor tiene puntos fuertes y débiles que no son iguales para todos. Por eso, es difícil optimizar todos de la misma manera.
Sobre optimización, como manifiestas tu deseo de aprender más que de solucionar un problema concreto, vuelvo a indicar la lectura del capítulo 7, en especial la parte 7.4 http://dev.mysql.com/doc/refman/5.0/es/optimizing-database-structure.html que habla sobre optimizar el diseño de la tabla.
Por ejemplo, los permisos otorgados tienen mucha influencia. Si a un usuario se le concede solamente permiso para acceder a la base de datos, será todo mucho más rápido que si se otorgan derechos individuales sobre tablas y columnas, porque en ese caso deberá controlar los permisos casi en cualquier tarea que ejecute.
Yo personalmente uso y recomiendo el motor InnoDB, porque tiene menos problemas de rendimiento y más funcionalidades (es transaccional, con eso te digo todo).
He tratado de dar una respuesta breve pero el tema es amplio, si tienes más preguntas estaré gustoso de tratar de resolverlas.