Esta bastante bien aunque le faltan algunos apartados por completar. A mi en español me gustaba esta http://c.conclase.net/. Hay que reconocer que las mejores están en inglés.
Yo creo que es una buena compra. Con 12GB te da para guardar partidas para siempre. Lo unico que te impide es poder bajarte demos o comprar juegos en la tienda online. Y de todas formas si no te es suficiente con 12GB el disco duro se puede cambiar. Creo que la he visto por unos 160€ así que en mi opinion esta bien de precio.
Que un punto interseccione con una arista de un triangulo es muy difícil. Otra cosa, dices que si intersecciona quieres saber en que punto intersecciona. Evidentemente, si un punto intersecciona con algo es en ese mismo punto. A lo mejor en vez de un punto te refires a un segmento...
Lo del puntero es por el tema de las precedencias, el operador [] es el que tiene más precedencia junto con otros. Entonces esto *s es equivalente a esto *(s). Como bien has dicho, lo que haces es coger un elemento e intentas usarlo como si fuese un puntero.
Lo de pasar un puntero por referencia lo digo porque los parametros que se pasan por refrencia suelen ser estructuras de tamaño considerable. Eso es porque copiar dicha estructura sería muy costoso. En realidad pasar algo por referencia es como pasar un puntero a ese algo, sólo que dentro de la función no necesitas hacer tantos castings(queda feo tanto paréntesis), y además al llamar a la función pasas el parametro como si fuese por valor(te ahorras el &). Volviendo a lo de pasar un puntero por referencia, un puntero ocupa poco, no necesitas pasar una refencia a un puntero(es como si pasas un puntero a un puntero). No esta mal aunque si lo pasas por valor ahorras un acceso a memoria.