Los verbos ir y venir se comportan en castellano de manera diferente a como lo hacen en la mayoría de las lenguas de nuestro entorno, como el inglés, el francés, el italiano, el catalán o el alemán. Esto puede dar pie fácilmente a confusiones.
En nuestro idioma, los dos verbos describen un movimiento y toman como referencia al hablante. La diferencia básica entre uno y otro es la siguiente.
En el caso de ir, el movimiento se aleja del punto en que se encuentra el hablante, por ejemplo:
(1) Voy a la catedral a las once, pues a las doce dan la misa del Peregrino y no quiero perdérmela [Josep Trullas: Caminando entre los pensamientos de un peregrino].
En (1) la persona que habla se encuentra en un punto. A partir de ahí, inicia un movimiento que se aleja de ese punto y concluye en otro diferente, que es la catedral. Ir es un movimiento de alejamiento desde el lugar en que se halla el hablante en el momento en que empieza a hablar.
En cambio, venir sirve para referirse a un movimiento que termina en el punto en que se encuentra el hablante:
(2) Tefari exhibía hondas ojeras cuando vino a recogerme la mañana siguiente [Javier Reverte: Los caminos perdidos de África].
En (2) hay un personaje, Tefari, que se desplaza hacia el punto en que se encuentra el narrador. El narrador es el hablante (no faltaría más). Venir es un movimiento de acercamiento al lugar en que se encuentra el hablante.
También te puede interesar la diferencia entre ir e irse.