Faits :
A.
Par jugement du 28 avril 2016, le Tribunal correctionnel de l'arrondissement de La Broye et du Nord vaudois a condamné X._ à une peine privative de liberté de 16 mois avec sursis et à une amende de 3'000 fr., pour violation des règles de la circulation routière, violation grave qualifiée des règles de la circulation routière et violation des devoirs en cas d'accident.
B.
Statuant sur appel de X._, la Présidente de la cour d'appel pénale du Tribunal cantonal vaudois a rejeté la réquisition d'audition d'un témoin, par avis du 29 juillet 2016. Par jugement du 4 octobre 2016, la cour d'appel pénale du Tribunal cantonal vaudois a rejeté l'appel et confirmé la décision de première instance.
La cour cantonale a retenu les éléments de fait suivants.
A Céligny, le 7 mai 2014, à 14h40, X._ a circulé en direction de Lausanne au volant de son véhicule automobile à la vitesse de 110 km/h (marge de sécurité déduite), alors que la vitesse était limitée à 80 km/h, commettant ainsi un excès de vitesse de 30 km/h.
Le 31 mai 2014, vers 20h45, X._ circulait sur la route cantonale Yverdon-les-Bains - Estavayer-le-Lac, au volant de sa voiture, à une vitesse nettement supérieure à celle autorisée hors des localités. Sur le tronçon rectiligne situé entre le chemin d'accès au camping et le chemin d'accès au port d'Yvonand, X._ a dépassé à grande vitesse la voiture conduite par B._. Parvenu dans une courbe à droite sans visibilité, peu avant le passage à niveau CFF, X._, toujours à haute vitesse, s'est déporté sur la voie de gauche réservée aux usagers circulant en sens inverse en franchissant la ligne de sécurité et dépassant une file de véhicules. Il s'est alors retrouvé en présence de la voiture conduite par A._, qui circulait normalement en sens inverse à la vitesse de 40 km/h, dès lors qu'elle venait de démarrer après s'être arrêtée au passage à niveau dont les barrières venaient de se relever. A._ a donné un coup de volant à gauche pour éviter une collision frontale et a terminé sa course hors de la chaussée opposée. X._ a mordu avec sa voiture la bordure herbeuse située à gauche dans son sens de marche, a touché une balise, est revenu dans sa voie de circulation et a poursuivi sa route.
C.
X._ forme un recours en matière pénale auprès du Tribunal fédéral contre la décision cantonale dont il requiert, avec suite de frais et dépens, la réforme en ce sens qu'il est acquitté des infractions de violation grave qualifiée des règles de la circulation routière et de violation des devoirs en cas d'accident, seule une peine pécuniaire devant être prononcée. Subsidiairement, il conclut à l'annulation du jugement et au renvoi de la cause à l'autorité cantonale. Il sollicite l'octroi de l'assistance judiciaire.
Invités à se déterminer sur le mémoire de recours, le Ministère public et la cour cantonale y ont renoncé.

Considérant en droit :
1.
Le recourant invoque une violation de son droit d'être entendu quant à sa demande d'audition de témoin (cf. <ref-law>).
1.1. La jurisprudence déduit du droit d'être entendu (art. 29 al. 2 Cst., art. 3 al. 2 let. c CPP) l'obligation pour le juge de motiver ses décisions afin que le justiciable puisse les comprendre, les contester utilement s'il y a lieu et exercer ses droits de recours à bon escient (<ref-ruling> consid. 3.2.1 p. 564 s.; <ref-ruling> consid. 4.1 p. 88 et les arrêts cités). Pour satisfaire à ces exigences, il suffit que l'autorité mentionne, au moins brièvement, les motifs qui l'ont guidée et sur lesquels elle a fondé son raisonnement. Elle ne doit pas se prononcer sur tous les moyens des parties, mais peut au contraire se limiter aux questions décisives (<ref-ruling> consid. 4.2 p. 157). La motivation peut d'ailleurs être implicite et résulter des différents considérants de la décision (<ref-ruling> consid. 3.2.1 p. 565).
Le droit d'être entendu est une garantie de nature formelle, dont la violation entraîne en principe l'annulation de la décision attaquée, indépendamment des chances de succès du recours sur le fond (<ref-ruling> consid. 2.8.1 p. 226; arrêt 6B_986/2016 du 20 septembre 2017 consid. 1.4.1 [destiné à la publication aux ATF]).
1.2. Aux termes de l'<ref-law>, la procédure de recours se fonde sur les preuves administrées pendant la procédure préliminaire et la procédure de première instance. L'<ref-law> règle les preuves complémentaires. Ainsi, la juridiction de recours administre, d'office ou à la demande d'une partie, les preuves complémentaires nécessaires au traitement du recours. Conformément à l'<ref-law>, il n'y a pas lieu d'administrer des preuves sur des faits non pertinents, notoires, connus de l'autorité ou déjà suffisamment prouvés. Cette disposition codifie, pour la procédure pénale, la règle jurisprudentielle déduite de l'art. 29 al. 2 Cst. en matière d'appréciation anticipée des preuves (arrêts 6B_1173/2016 du 7 août 2017 consid. 2.1; 6B_71/2016 du 5 avril 2017 consid. 2.1.3 et les références citées). Le magistrat peut ainsi refuser des preuves nouvelles, lorsqu'une administration anticipée de ces preuves démontre qu'elles ne seront pas de nature à modifier le résultat de celles déjà administrées (<ref-ruling> consid. 5.3 p. 236 s.). Ce refus d'instruire ne viole le droit d'être entendu des parties et l'<ref-law> que si l'appréciation anticipée effectuée est entachée d'arbitraire (cf. <ref-ruling> consid. 3.3 p. 64; sur la notion d'arbitraire, cf. <ref-ruling> consid. 6 p. 358).
1.3. Dans son mémoire d'appel, le recourant a requis de la cour cantonale l'audition du témoin C._, passager de son véhicule, au sujet de la " touchette de la balise ", de la vitesse et de la position des véhicules lors des événements du 31 mai 2014.
Par courrier du 29 juillet 2016, la Présidente de la cour cantonale a rejeté les " réquisitions de preuve qui ne répondent pas aux conditions de l'<ref-law> et qui, au surplus, n'apparaissent pas pertinentes ". Dans le jugement entrepris, il est fait état de l'avis du 29 juillet 2016, sans autre considération quant à la réquisition de preuve.
1.4. La cour cantonale ne fait aucune référence concrète à la mesure requise (à savoir l'audition d'un témoin) et mentionne, de manière générale, plusieurs réquisitions de preuves, lesquelles n'apparaitraient pas pertinentes. Les juges cantonaux n'expliquent pas pour quelles raisons l'audition du témoin ou les faits sur lesquels elle porterait ne seraient pas pertinents. Les motifs ne résultent pas implicitement des différents considérants de la décision, lesquels ne portent pas sur l'appréciation des preuves (cf. infra consid. 2). Faute de pouvoir saisir les motifs justifiant le refus de la mesure d'instruction, le recourant ne pouvait pas se rendre compte de la portée de la décision et la contester utilement. Dans ces circonstances, force est de constater que le droit d'être entendu du recourant a été violé. Le grief du recourant doit être admis, la décision entreprise annulée sur ce point et la cause renvoyée à la cour cantonale pour nouvelle décision.
2.
Le recourant dénonce également une violation de son droit d'être entendu dès lors que la cour cantonale n'aurait pas examiné ses critiques de fait visant à remettre en cause la vitesse et la position de son véhicule.
2.1. L'autorité de recours dispose d'un plein pouvoir d'examen en fait et en droit et applique ce dernier d'office (<ref-law>; cf. arrêts 6B_421/2017 du 3 octobre 2017 consid. 1.3; 6B_1251/2016 du 19 juillet 2017 consid. 3.3).
L'<ref-law> permet à l'autorité de recours, par soucis d'économie de procédure, de renvoyer à l'exposé des motifs de l'autorité précédente, lorsqu'elle y souscrit (<ref-ruling> consid. 1.2.3 p. 246). La faculté de motiver sommairement la décision, en renvoyant entièrement ou en partie à la décision de première instance, trouve ses limites dans le droit des parties d'être entendues, lequel impose à l'autorité d'examiner les griefs soulevés et d'en donner acte dans sa décision (cf. art. 29 al. 2 Cst., art. 3 al. 2 let. c CPP; arrêt 6B_825/2014 du 30 octobre 2014 consid. 2.2; NILS STOHNER, in Basler Kommentar, Schweizerische Strafprozessordnung, 2e éd. 2014, n° 9 ad art. 82; ALAIN MACALUSO, in Commentaire romand, Code de procédure pénale suisse, 2011, n° 16 ad art. 82). Il y a lieu d'entrer en matière lorsque des nouveaux éléments de fait ou de droit sont soulevés pour la première fois en instance de recours. La possibilité de renvoyer à l'exposé des motifs de l'autorité inférieure doit être utilisée avec réserve et trouve son sens premier lorsque l'état de fait n'est pas contesté et en cas de critiques juridiques abstraites. Lorsque l'état de fait ou l'application du droit est contesté, le renvoi n'est possible que lorsque l'autorité de recours fait (totalement) siennes les considérations de l'autorité précédente. L'<ref-law> ne libère pas l'autorité de recours de son obligation de motiver et trouve ses limites lorsqu'on ne comprend plus aisément les considérants en fait et en droit ressortant de la décision de l'autorité de recours (cf. <ref-ruling> consid. 1.2.3 p. 246 s.).
2.2. Dans son mémoire d'appel, le recourant mettait en doute la vitesse et la position du véhicule de A._ ainsi que sa propre vitesse telles qu'établies par le tribunal de première instance en se fondant sur la position des autres véhicules (à l'arrêt), la configuration des lieux (passage à niveau) et les témoignages. Selon lui, A._ n'avait pas eu matériellement le temps de démarrer s'il avait roulé à la vitesse retenue par le tribunal de première instance, vitesse qu'il contestait.
La cour cantonale a fait sienne l'argumentation des premiers juges relative à l'appréciation des preuves et l'établissement des faits, qu'elle a qualifié de claire et convaincante, en application de l'<ref-law>. Elle a ajouté que cette argumentation répondait intégralement aux griefs du recourant.
2.3. La cour cantonale n'a pas traité les critiques de fait soulevées en appel et n'a pas expliqué, même sommairement, en quoi elle les aurait considérées comme infondées, insuffisamment motivées ou non pertinentes. La cour cantonale, qui jouissait d'un plein pouvoir de cognition en fait et en droit, ne pouvait pas s'épargner toute appréciation en prétendant que la motivation de première instance répondait aux arguments du recourant, lesquels étaient précisément dirigés contre l'établissement des faits des premiers juges. Dans ces circonstances, en se limitant à renvoyer de manière générale à l'appréciation des preuves et à l'établissement des faits de première instance, la cour cantonale a violé le droit d'être entendu du recourant. Son grief d'ordre formel doit être admis et la décision entreprise annulée sur ce point et renvoyée à la cour cantonale pour qu'elle traite les critiques de fait.
3.
Le recours doit être admis. Le recourant, qui obtient gain de cause, ne supportera pas de frais. Le canton de Vaud n'a pas non plus à en supporter (art. 66 al. 1 et 4 LTF). Le recourant a droit à des dépens à la charge du canton. Cela rend sans objet sa demande d'assistance judiciaire.

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est admis. Le jugement attaqué est annulé et la cause est renvoyée à l'autorité cantonale pour nouvelle décision.
2.
Il n'est pas perçu de frais judiciaires.
3.
Le canton de Vaud versera au conseil du recourant une indemnité de 3'000 fr. à titre de dépens pour la procédure devant le Tribunal fédéral.
4.
Le présent arrêt est communiqué aux parties et à la Cour d'appel pénale du Tribunal cantonal du canton de Vaud.
Lausanne, le 29 décembre 2017
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
La Greffière : Klinke