Sono entrambe corrette ma hanno un significato leggermente diverso. Il verbo andare significa 'spostarsi verso un posto nel quale non sono presenti né il parlante né la persona con cui si sta parlando'; venire, invece, significa 'spostarsi verso un posto dove sono presenti o il parlante, o la persona con cui si sta parlando, o entrambi'. Quindi vado a Milano implica che la persona con cui si sta parlando non sia a Milano (e ovviamente neanche il parlante, visto che è lui che si sposta); vengo a Milano implica che la persona con cui si sta parlando sia a Milano (ma, ancora, non il parlante, visto che è lui che si sposta).
Se la persona che si sposta è quella a cui ci si rivolge (tu o voi) o una terza persona, è il luogo in cui si trova il parlante a determinare la scelta: tu vai a Milano / Mario va a Milano (se il parlante non è a Milano); tu vieni a MilanoMario viene a Milano (se il parlante è a Milano).
Si noti che la terza persona non è influente nella scelta tra i due verbi: contano soltanto il parlante e la persona a cui il parlante si rivolge. Vengo a Milano con Mario se la persona a cui mi rivolgo è a Milano; vado a Milano con Mario se la persona a cui mi rivolgo non è a Milano; tu vai a Milano / Mario va a Milano con Andrea (se il parlante non è a Milano); tu vieni a MilanoMario viene a Milano con Andrea (se il parlante è a Milano).
Nel caso in cui nessuno degli interlocutori sia nel luogo verso dove il soggetto di prima o seconda persona (io / noi o tu / voi) si sposta, ma uno dei due accompagni l'altro, si sceglie ancora venire, anche se di norma sarebbe richiesto andare; per questo si dice vengo a Milano con te e vieni a Milano con me (anche se è chiaro che nessuno di noi due si trova a Milano) e non vado a Milano con te, né vai a Milano con me. Un confronto tra italiano e inglese a proposito di quest'uso si può leggere nella risposta n. 28008 dell'archivio di DICO.
Fabio Ruggiano