1) falso, cuando mas conexiones hagas mas lento será tu script. De hecho es mejor usar conexiones persistentes.
2) Creo que serán diferencias minimas. En las consultas es importante nombrar los campos a extraer en lugar de usar *.
3) cachear los resultados, es decir, para una misma consulta, no tener que hacer de nuevo el query, sólo mostrar los que ya hay en las variables de sesion.
4) Las variables de sesion.
Se aconseja crear indices de forma conveniente para acelerar el proceso, ver esta pagina de optimizacion de mysql:
http://www.mysql-hispano.org/page.php?id=29