Faits : A. Par jugement du 7 mai 2019, le Tribunal correctionnel de l'arrondissement de l'Est vaudois a libéré A._ du chef de dommages à la propriété d'importance mineure (I) et l'a reconnu coupable de lésions corporelles simples, injure, violence ou menace contre les autorités et les fonctionnaires et infraction grave à la loi fédérale sur les stupéfiants (II). Il l'a condamné à une peine privative de liberté de 15 mois, sous déduction de 150 jours de détention provisoire et à une peine pécuniaire de 5 jours-amende à 30 fr. le jour (III). Le Tribunal a renoncé à révoquer le sursis accordé le 16 avril 2015 (IV), a constaté que A._ avait été détenu durant 24 jours dans des conditions de détention illicites et a ordonné que 12 jours soient déduits de la peine privative de liberté à titre de réparation du tort moral (V). L'expulsion de A._ du territoire suisse a été ordonnée pour une durée de 5 ans (VI). B. Par jugement du 25 septembre 2019, la Cour d'appel pénale du Tribunal cantonal vaudois a rejeté l'appel formé par A._ contre le jugement de première instance, qu'elle a confirmé. En substance, la cour cantonale s'est fondée sur les faits suivants. B.a. Né en 1984 en Tunisie, A._ s'est marié en 2006 avec une Suissesse et a obtenu un permis de séjour en Suisse. Le couple s'est séparé par la suite. En 2013, il a épousé B._. Cette dernière a déposé plainte à plusieurs reprises pour des violences conjugales. Après avoir vécu plusieurs mois chez la mère de B._, puis s'être séparé à plusieurs reprises, le couple vit à nouveau ensemble. Au printemps 2019, une intervention policière pour des violences conjugales a eu lieu. A._ a travaillé comme magasinier entre 2006 et 2015. Il est depuis lors sans emploi et vit du revenu d'insertion. S'il a entamé des démarches auprès d'un organisme d'insertion professionnelle en vue d'être repris par l'office de placement compétent (ORP), qui l'avait exclu en raison de rendez-vous manqués, il n'a pas jugé utile de rechercher un emploi. B.b. Le 23 août 2017, A._ a été interpellé alors qu'il était en possession de 12,3 grammes de méthamphétamine et de 3 grammes de cocaïne. Le taux de pureté des lots de 12,1 et de 0,2 grammes de méthamphétamine saisis était respectivement de 79,9 et 80%, ce qui équivaut à 9,7 et 0,16 grammes de drogue pure. Le taux de pureté de la cocaïne était de 63,7%, à savoir 1,9 gramme de drogue pure. Cette drogue était destinée à la consommation personnelle de A._ et de son épouse, voire d'amis de consommation. Des perquisitions effectuées à son domicile et dans une consigne de gare dont il détenait la clé ont permis la découverte de matériel de conditionnement et d'une quantité totale de 33,6 grammes de marijuana. B.c. Entre l'été 2016 et le 23 août 2017, A._ a vendu à plusieurs reprises, à des personnes non identifiées, notamment à ses voisins, une quantité indéterminée de marijuana. Durant cette période, il a vendu à C._ une quantité totale de 4 grammes de méthamphétamine, à raison de 40 fr. par dose de 0,1 gramme. Il a également remis à ce dernier 1 gramme de méthamphétamine en échange de 20 pilules thaïes. Entre octobre 2016 et août 2017, A._ a acheté une quantité totale d'au moins 40 grammes de méthamphétamine, dont il a remis gratuitement le tiers, soit 13,33 grammes, à son épouse, avec laquelle il consommait cette drogue lors de soirées ou chez eux. A une date indéterminée du mois de juin 2017, A._ a remis gratuitement une quantité de 0,1 gramme de méthamphétamine à D._. Durant l'été 2017, il a remis à 3 ou 4 reprises à E._, en échange d'une quantité indéterminée de marijuana, 0,1 à 0,2 gramme de méthamphétamine, à savoir une quantité totale d'au moins 0,3 gramme. Durant la même période, il a vendu à cette même personne, à 2 ou 3 reprises, une quantité de 0,1 à 0,2 gramme de méthamphétamine pour un montant de 50 fr., à savoir à tout le moins 0,2 gramme. Il faisait l'intermédiaire en prenant l'argent qui était remis et rapportait la drogue. Au total, les ventes et remises gratuites de méthamphétamine portaient à tout le moins sur une quantité de 18,93 grammes, de sorte qu'il a remis ou vendu 15,13 grammes de méthamphétamine pure, selon un taux moyen de 79,5%. B.d. Le 23 août 2017, au centre-ville de F._, A._ s'est violemment opposé à son contrôle par deux agents de police et a refusé de les suivre en les repoussant à plusieurs reprises et en se débattant. Une empoignade a eu lieu, lors de laquelle un agent et A._ sont tombés au sol. Lors de cet accrochage, ce dernier a notamment tenté de se saisir de l'arme et du bâton tactique du policier. Il a traité les agents de " fils de pute de flics, sale chien, enculé "et les a menacés en leur déclarant entre autres " si je te trouve, je te crève, je vais te crever, je vais niquer votre mère ". Blessés, les deux agents de police ont déposé plainte. A._, qui était sous l'influence de méthamphétamine et de cannabis le jour en question, a également subi des contusions. B.e. Le casier judiciaire suisse de A._ fait état d'une condamnation du 16 avril 2015 par le ministère public de l'arrondissement de l'Est vaudois, à 60 jours-amende à 30 fr. le jour (dont la moitié avec sursis) et 600 fr. d'amende pour conduite en état d'incapacité et contravention à la LStup. C. A._ forme un recours en matière pénale auprès du Tribunal fédéral contre le jugement cantonal, dont il requiert, avec suite de frais et dépens, la réforme, en ce sens qu'il est reconnu coupable de lésions corporelles simples, injure, violence et menace contre les autorités et les fonctionnaires et infraction simple à la LStup, une peine privative de liberté de 150 jours ainsi que 5 jours-amende à 30 fr. le jour étant prononcés. Il conclut au versement d'une indemnité pour tort moral de 1'200 fr. en réparation de ses conditions de détention. Il sollicite en outre l'octroi de l'assistance judiciaire.