Faits :
A.
Par jugement du 18 novembre 2019, rectifié par prononcé du 19 novembre 2019, le Tribunal correctionnel de l'arrondissement de l'Est vaudois a acquitté A._ des infractions de tentative d'escroquerie et de violence ou menace contre les autorités et les fonctionnaires, l'a condamné pour lésions corporelles simples qualifiées, vol, menaces qualifiées et délit à la loi fédérale sur les armes, les accessoires d'armes et les munitions du 20 juin 1997 (LArm; RS 514.54) à une peine privative de liberté de 36 mois, sous déduction de la détention provisoire, ainsi qu'aux frais de la procédure par 22'715 fr., le solde de 1/5 étant laissé à la charge de l'État, et a rejeté ses conclusions en indemnisation. Il a donné acte de ses réserves civiles à B._ et statué sur le sort des pièces à conviction.
B.
Par jugement du 20 mai 2020, la Cour d'appel pénale du Tribunal cantonal vaudois a très partiellement admis l'appel de A._ contre ce jugement. Elle a alloué à A._ 1'323 fr. 80 (TVA comprise), au titre d'indemnité réduite (1/5) pour les dépenses occasionnées par la procédure de première instance, compensée avec les frais, mis 9/10 des frais de la procédure d'appel à sa charge et alloué une indemnité réduite (1/10) de 463 fr. 10 (TVA comprise) pour ses frais de défense en appel, montants compensés entre eux. Pour le surplus, elle a confirmé le jugement de première instance.
En substance, le jugement du 20 mai 2020 repose sur les faits suivants.
B.a. A._ et C._ forment un couple depuis la fin de l'année 2017. Ils ont fait ménage commun dès leur rencontre, dans un premier temps au domicile de C._ à U._, puis, dès l'été 2018, à V._. C._ a été la victime de la violence de A._, qui la frappait régulièrement, dès le début de leur relation. A U._, puis à V._, tout au long de l'année 2018, la vie du couple a été émaillée de fréquents passages à tabac, lors desquels A._ infligeait à C._ gifles, coups de poing et coups de ceinture, qui lui marquaient le visage et le corps d'hématomes et autres tuméfactions. Plusieurs personnes ont constaté les multiples bleus et coquards sur le corps de C._, parmi lesquels ses amis D._ et E._, ainsi que sa voisine F._. Pour les faits suivants, C._ n'a pas déposé de plainte pénale.
Le 23 mars 2018, à U._, vers 22h20, la police est intervenue au domicile de C._, après que l'un de ses amis proches, D._, l'avait avisée qu'elle était victime de violences conjugales, l'auteur étant son compagnon, A._. A leur arrivée, les policiers se sont retrouvés face aux protagonistes, tous deux oppositionnels. C._ présentait un visage tuméfié, un hématome à l'oeil gauche et des marques à la base du cou. Quelques heures plus tôt, elle s'était présentée à la consultation de l'hôpital Riviera-Chablais, site de T._, souffrant d'une plaie à l'auriculaire gauche, laquelle avait nécessité la pose de cinq points de suture. C._ avait prétexté s'être blessée en coupant des légumes. En réalité, la blessure lui avait été occasionnée par A._ qui, lors d'une dispute, lui avait planté une fourchette dans la main.
A W._, le 12 décembre 2018, C._ a été admise à l'hôpital Riviera-Chablais après avoir été tabassée par A._, qui lui avait asséné plusieurs coups au niveau de la tête. C._ a souffert d'un traumatisme crânien simple et d'une dermabrasion frontale gauche et au niveau de la lèvre supérieure.
A V._, le 15 décembre 2018, la police est intervenue au domicile de C._ et de A._, après qu'elle avait été informée par la voisine, F._, du fait que A._ était en train de frapper sa concubine, qui hurlait et le suppliait d'arrêter. F._ avait précisé qu'elle entendait le bruit des coups "comme si A._ était en train de la balancer contre les murs ou sur la table". Lors de cette dispute, laquelle avait duré plusieurs minutes, A._ avait menacé C._ de la tuer. Sur place, les policiers s'étaient heurtés à l'attitude oppositionnelle de A._, qui avait refusé de les laisser entrer, avant de les exhorter à quitter les lieux.
Le 19 septembre 2018, à X._, à la boucherie Y._, A._, de concert avec C._, a dérobé des articles pour un montant de 328 fr. 45. B._, représentant qualifié du commerce, a déposé plainte.
B.b. A._ a fait l'objet de plusieurs sanctions disciplinaires. A teneur de son casier judiciaire, il a deux antécédents au Tribunal des mineurs datant de 2012 et 2014. Il a en outre été condamné en 2015 et 2017, essentiellement pour tentative de lésions corporelles graves, lésions corporelles simples, brigandage, violence ou menace contre les autorités et les fonctionnaires et dommages à la propriété, à des peines privatives de liberté notamment. Sa dernière condamnation remonte au 7 février 2019, où il a été condamné, par défaut, à une peine privative de liberté de 200 jours notamment, pour menaces et tentative de menaces, discrimination raciale et violence ou menace contre les autorités et les fonctionnaires. Ce jugement du Juge de police de l'arrondissement de la Sarine est devenu définitif et exécutoire le 3 mars 2020, date de l'arrêt rendu par la Cour d'appel pénal du Tribunal cantonal fribourgeois à la suite du retrait de l'appel du recourant déposé le 20 mars 2019 à l'encontre du jugement du 7 février 2019.
C.
A._ forme un recours en matière pénale au Tribunal fédéral contre le jugement précité. Il conclut, avec suite de frais et dépens, à son annulation et au renvoi de la cause à la cour cantonale "pour nouvelle instructionet nouvelle décision dans le sens des considérants". Par ailleurs, il requiert l'octroi de l'assistance judiciaire.

Considérant en droit :
1.
Le recours en matière pénale est une voie de réforme (<ref-law>). Le recourant ne peut se borner à demander l'annulation de la décision et le renvoi de la cause à l'autorité cantonale, mais doit également, sous peine d'irrecevabilité, prendre des conclusions sur le fond du litige. Il n'est fait exception à ce principe que lorsque le Tribunal fédéral, s'il admettait le recours, ne serait pas en mesure de statuer lui-même sur le fond et ne pourrait que renvoyer la cause à l'autorité cantonale (<ref-ruling> consid. 1.3 p. 317; <ref-ruling> consid. 1.3 p. 383; <ref-ruling> consid. 3.1 p. 489 s.; arrêts 6B_598/2020 du 3 septembre 2020 consid. 2; 6B_422/2020 du 9 juin 2020 consid. 1).
En l'occurrence, le recourant n'a pas pris de conclusions sur le fond, mais a uniquement sollicité l'annulation du jugement attaqué et le renvoi de la cause à la cour cantonale. Un tel procédé n'est en principe pas admissible. Les motifs du recours permettent toutefois de comprendre que le recourant souhaite obtenir son acquittement des infractions de lésions corporelles simples qualifiées et de menaces qualifiées et que la répartition des frais soit revue en conséquence, qu'il entend obtenir une peine privative de liberté plus clémente et qu'il sollicite une indemnité plus élevée - respectivement un tarif horaire moins réduit - pour ses dépens dans la procédure de première instance et d'appel. Cela suffit tout juste pour satisfaire aux exigences de forme déduites de l'art. 42 al. 1 et 2 LTF.
2.
Le recourant ne conteste pas les faits mais nie avoir fait ménage commun avec la victime lors de ceux-ci.
2.1. Le Tribunal fédéral n'est pas une autorité d'appel, auprès de laquelle les faits pourraient être rediscutés librement. Il est lié par les constatations de fait de la décision entreprise (<ref-law>), à moins qu'elles n'aient été établies en violation du droit ou de manière manifestement inexacte au sens des art. 97 al. 1 et 105 al. 2 LTF, à savoir, pour l'essentiel, de façon arbitraire au sens de l'art. 9 Cst. Une décision n'est pas arbitraire du seul fait qu'elle apparaît discutable ou même critiquable; il faut qu'elle soit manifestement insoutenable et cela non seulement dans sa motivation mais aussi dans son résultat (<ref-ruling> consid. 1.1 p. 155 s.; <ref-ruling> consid. 1.1 p. 503; sur la notion d'arbitraire v. <ref-ruling> consid. 2.3.1 p. 244). Le Tribunal fédéral n'entre en matière sur les moyens fondés sur la violation de droits fondamentaux, dont l'interdiction de l'arbitraire, que s'ils ont été invoqués et motivés de manière précise (<ref-law>; ATF <ref-ruling> consid. 1.1 p. 503). Les critiques de nature appellatoire sont irrecevables (<ref-ruling> consid. 1.1 p. 156). Lorsque l'appréciation des preuves et la constatation des faits sont critiquées en référence à la présomption d'innocence (art. 6 par. 2 CEDH, 32 al. 1 Cst. et 10 CPP), le principe in dubio pro reo n'a pas de portée plus large que l'interdiction de l'arbitraire (<ref-ruling> consid. 1.1 p. 156; <ref-ruling> consid. 1.1 p. 503).
Lorsque l'autorité cantonale a forgé sa conviction quant aux faits sur la base d'un ensemble d'éléments ou d'indices convergents, il ne suffit pas que l'un ou l'autre de ceux-ci ou même chacun d'eux pris isolément soit à lui seul insuffisant. L'appréciation des preuves doit en effet être examinée dans son ensemble. Il n'y a ainsi pas d'arbitraire si l'état de fait retenu pouvait être déduit de manière soutenable du rapprochement de divers éléments ou indices. De même, il n'y a pas d'arbitraire du seul fait qu'un ou plusieurs arguments corroboratifs apparaissent fragiles, si la solution retenue peut être justifiée de façon soutenable par un ou plusieurs arguments de nature à emporter la conviction (arrêts 6B_447/2020 du 8 septembre 2020 consid. 1.1.1; 6B_259/2020 du 17 août 2020 consid. 3.1; 6B_397/2020 du 24 juillet 2020 consid. 1.2).
2.2. A teneur de l'<ref-law> et de l'<ref-law>, les lésions corporelles simples et les menaces se poursuivent d'office si l'auteur est le partenaire de la victime, pour autant qu'ils fassent ménage commun pour une durée indéterminée et que l'atteinte ait été commise durant cette période ou dans l'année qui a suivi la séparation. Ces dispositions visent une situation de concubinat qui crée une communauté domestique assimilable aux hypothèses de l'art. 123 ch. 2 al. 4 et 5 CP, respectivement de l'art. 180 al. 2 let. a et b CP (arrêt 6B_1057/2015 du 25 mai 2016 consid. 1.1 et les références citées).
La relation de concubinage doit être comprise comme une communauté de vie d'une certaine durée, voire durable, entre deux personnes, à caractère en principe exclusif, qui présente une composante tant spirituelle que corporelle et économique, et qui est parfois désignée comme une communauté de toit, de table et de lit. Si plusieurs années de vie commune sont certes un élément parlant en faveur d'une relation de concubinage stable, elles ne sont pas à elles seules décisives. Le juge doit au contraire procéder dans chaque cas à une appréciation de l'ensemble des circonstances de la vie commune afin d'en déterminer la qualité et si celle-ci peut être qualifiée de relation de concubinage stable (<ref-ruling> consid. 2.3.3 p. 160 ss et les références citées, publié in SJ 2012 I 153; arrêt 6B_1057/2015 précité consid. 1.1; cf. aussi arrêt 6B_967/2019 du 7 mai 2020 consid. 2.3.4-2.3.5, publié in Pra 2020 n° 79 p. 785).
2.3. La cour cantonale a rappelé que les faits s'étaient déroulés au cours de l'année 2018 et qu'il n'était pas contesté que le recourant et la victime avaient noué une relation amoureuse en décembre 2017. S'ils n'étaient colocataires d'un logement commun que depuis le 1 er décembre 2018, le recourant avait expliqué avoir habité avec sa compagne dès le début de leur relation, d'abord à U._ puis à V._ (audition du 21 décembre 2018). Que cette cohabitation n'ait pas été officialisée auprès du contrôle des habitants ne changeait rien à l'existence effective d'une communauté de toit dès le mois de décembre 2017. Les déclarations des intéressés confirmaient qu'ils menaient depuis lors une véritable "vie de couple". Le recourant avait déclaré qu'il n'y avait pas de violences "au sein de [s]on couple", quant à la victime, elle avait indiqué qu'elle menait une "vie de couple" avec le recourant, qu'elle avait commencé à le fréquenter en décembre 2017 et qu'ils s'étaient tout de suite "mis en couple". Le recourant avait confirmé que cette "vie de couple" devait perdurer. Comme l'avaient relevé les premiers juges, l'existence d'une communauté de vie durable ressortait également des différents courriers versés au dossier, dans la mesure où ils attestaient l'existence d'une dépendance financière de la victime - le recourant ayant notamment souligné que sa compagne n'avait aucune autre aide que lui et le social -, de l'intensité de la relation amoureuse des deux partenaires, ainsi que de l'existence de projet de mariage. Ces courriers permettaient de comprendre que la victime avait été enceinte des oeuvres du recourant et que si elle s'était résolue à avorter compte tenu des circonstances, le recourant aurait voulu garder l'enfant. Au vu de ces éléments, il ne faisait aucun doute que le recourant et la victime vivaient une relation de concubinage stable au moment où les infractions avaient été commises. Le recourant soutenait en vain que le ministère public avait refusé d'entrer en matière sur les violences dénoncées par le rapport de police du 23 avril 2018 au motif qu'il aurait lui aussi nié l'existence d'une communauté domestique. Il était manifeste que le ministère public ne disposait pas encore de toutes les informations qu'il avait pu récolter dans le cadre de la procédure. La condamnation du recourant pouvait être confirmée indépendamment du dépôt d'une plainte pénale.
2.4. Le recourant prétend que ses déclarations du 21 décembre 2018 seraient contradictoires, de sorte qu'elles ne pouvaient fonder "l'entier de l'accusation". Contrairement à ce que celui-ci soutient, la cour cantonale n'a pas fondé l'intégralité de son raisonnement sur la base de ses seules déclarations du 21 décembre 2018.
En tant que le recourant discute librement les faits constatés par la cour cantonale et y oppose sa propre appréciation des preuves - dans le but de démontrer que le recourant et la victime n'auraient habité ensemble qu'à partir du 1er décembre 2018 - son argumentation est purement appellatoire, et partant irrecevable. S'agissant des attestations délivrées par les communes de U._ et W._ (cf. pièce 106 du dossier cantonal), dont le recourant se prévaut et desquelles il ressortirait que la victime était domiciliée à U._ et le recourant à W._ jusqu'au 1er décembre 2018, celles-ci sont dénuées de pertinence. En effet, la cour cantonale n'a pas ignoré que la cohabitation n'avait pas été officialisée au contrôle des habitants. Elle a toutefois retenu que cela ne changeait rien à l'existence d'une communauté de toit dès le mois de décembre 2017, en regard des autres éléments du dossier. Que le recourant ait été présent lors de la perquisition effectuée le 30 octobre 2018 dans une chambre de l'hôtel Z._ à W._ n'implique pas encore, comme il le prétend, qu'il n'habitait pas chez la victime à cette époque. Pour ce qui est des références aux jugements du Tribunal cantonal vaudois, avancées pour étayer la thèse du recourant, elles sont vaines dès lors que ces décisions n'ont pas fait l'objet d'un contrôle par le Tribunal fédéral.
Le recourant soutient que sa relation avec la victime ne revêtait pas la densité suffisante pour être qualifiée de ménage commun. Il serait ainsi "manifeste" que celle-ci, souvent émaillée de disputes, ne reposait sur aucune base solide. Le couple s'était séparé peu de temps après l'incarcération du recourant, ce qui démontrait la fragilité de leur lien. Les courriers auxquels la cour cantonale se référait avaient été écrits dans un contexte très particulier expliquant leur ardeur. Le recourant prétend en outre que la victime n'était pas dépendante de lui financièrement, dans la mesure où elle payait la moitié de leur loyer. Elle aurait eu tout loisir de le quitter après son placement en détention si elle l'avait voulu.
Les critiques du recourant se limitent à des affirmations reposant sur sa propre appréciation de la situation, sans démontrer en quoi les considérations cantonales seraient entachées d'arbitraire. Lorsque le recourant soutient que sa cohabitation avec la victime n'aurait duré que quelques semaines (soit du 1er au 21 décembre 2018, date de son arrestation), il se base non sur des faits retenus, dont il n'a pas démontré l'arbitraire, mais sur ceux qu'il invoque librement. Cette manière de procéder est irrecevable. Enfin, contrairement à ce que prétend le recourant, la cour cantonale - respectivement les premiers juges - n'ont pas "constaté" que le recourant était domicilié à W._, référence étant faite aux événements qui se sont déroulés le 30 octobre 2018 - respectivement les 11 septembre et 25 octobre 2018, non contestés en appel - à W._. Ce faisant, la cour cantonale n'a fait que reproduire le contenu de l'acte d'accusation du 21 août 2019. En conséquence, le recourant échoue à démontrer en quoi la cour cantonale aurait versé dans l'arbitraire en retenant que le recourant et la victime vivaient une relation de concubinage stable au moment où les infractions ont été commises.
3.
Le recourant dénonce une violation des art. 47 et 49 CP.
3.1.
3.1.1. Aux termes de l'<ref-law>, le juge fixe la peine d'après la culpabilité de l'auteur. Il prend en considération les antécédents et la situation personnelle de ce dernier ainsi que l'effet de la peine sur son avenir (al. 1). La culpabilité est déterminée par la gravité de la lésion ou de la mise en danger du bien juridique concerné, par le caractère répréhensible de l'acte, par les motivations et les buts de l'auteur et par la mesure dans laquelle celui-ci aurait pu éviter la mise en danger ou la lésion, compte tenu de sa situation personnelle et des circonstances extérieures (al. 2).
La culpabilité de l'auteur doit être évaluée en fonction de tous les éléments objectifs pertinents, qui ont trait à l'acte lui-même, à savoir notamment la gravité de la lésion, le caractère répréhensible de l'acte et son mode d'exécution. Du point de vue subjectif, sont pris en compte l'intensité de la volonté délictuelle ainsi que les motivations et les buts de l'auteur. A ces composantes de la culpabilité, il faut ajouter les facteurs liés à l'auteur lui-même, à savoir les antécédents, la réputation, la situation personnelle (état de santé, âge, obligations familiales, situation professionnelle, risque de récidive, etc.), la vulnérabilité face à la peine, de même que le comportement après l'acte et au cours de la procédure pénale (<ref-ruling> consid. 9.1 p. 147; <ref-ruling> consid. 6.1.1 p. 66 s. et les références citées).
Le juge dispose d'un large pouvoir d'appréciation dans la fixation de la peine. Le Tribunal fédéral n'intervient que lorsque l'autorité cantonale a fixé une peine en dehors du cadre légal, si elle s'est fondée sur des critères étrangers à l'<ref-law>, si des éléments d'appréciation importants n'ont pas été pris en compte ou, enfin, si la peine prononcée est exagérément sévère ou clémente au point de constituer un abus du pouvoir d'appréciation. L'exercice de ce contrôle suppose que le juge exprime, dans sa décision, les éléments essentiels relatifs à l'acte ou à l'auteur qu'il prend en compte, de manière à ce que l'on puisse constater que tous les aspects pertinents ont été pris en considération et comment ils ont été appréciés, que ce soit dans un sens aggravant ou atténuant (<ref-law>). La motivation doit ainsi justifier la peine prononcée, en permettant de suivre le raisonnement adopté, même si le juge n'est pas tenu d'exprimer en chiffres ou en pourcentages l'importance qu'il accorde à chacun des éléments qu'il cite (<ref-ruling> consid. 1.2 p. 319; <ref-ruling> consid. 5.6 p. 61; <ref-ruling> consid. 2.1 p. 19 s.).
3.1.2. Selon l'<ref-law>, si, en raison d'un ou de plusieurs actes, l'auteur remplit les conditions de plusieurs peines de même genre, le juge le condamne à la peine de l'infraction la plus grave et l'augmente dans une juste proportion. Il ne peut toutefois excéder de plus de la moitié le maximum de la peine prévue pour cette infraction. Il est en outre lié par le maximum légal de chaque genre de peine (al. 1). Si le juge doit prononcer une condamnation pour une infraction que l'auteur a commise avant d'avoir été condamné pour une autre infraction, il fixe la peine complémentaire de sorte que l'auteur ne soit pas puni plus sévèrement que si les diverses infractions avaient fait l'objet d'un seul jugement (al. 2).
Si l'<ref-law> entre en considération, le juge doit fixer une peine complémentaire ( Zusatzstrafe) à la peine de base ( Grundstrafe) en tenant compte du principe de l'aggravation découlant de l'<ref-law> (<ref-ruling> consid. 1.3 p. 8). Lorsque les conditions nécessaires pour prononcer une peine complémentaire sont remplies, le tribunal fixe tout d'abord une peine d'ensemble hypothétique. Concrètement, le juge se demande d'abord quelle peine d'ensemble aurait été prononcée si toutes les infractions avaient été jugées simultanément. Dans ce contexte, le juge doit procéder selon les principes de l'<ref-law> (<ref-ruling> consid. 2.3.3 p. 268; <ref-ruling> consid. 5.2 p. 122 s.). La peine complémentaire est constituée de la différence entre cette peine d'ensemble et la peine de base, à savoir celle prononcée précédemment (ATF <ref-ruling> consid. 6.1.2 p. 67). En présence d'un concours rétrospectif, le juge doit exceptionnellement exposer au moyen de chiffres comment il a fixé la peine qu'il prononce (<ref-ruling> consid. 2.3.3 p. 268; <ref-ruling> consid. 8.3 p. 105; arrêts 6B_884/2018 du 5 février 2019 consid. 1.1.2; 6B_984/2016 du 13 septembre 2017 consid. 3.1.4).
3.2.
3.2.1. La cour cantonale a considéré, à l'instar du jugement de première instance, que la culpabilité du recourant était extrêmement lourde. Il avait exprimé son mépris complet de l'ordre juridique en se procurant une arme interdite et s'en était pris au patrimoine d'autrui. A peine sorti du prison, il avait porté atteinte à l'intégrité corporelle de son amie intime qui voulait se construire un avenir avec lui. Bien que les lésions occasionnées soient demeurées simples au sens de l'<ref-law>, elles n'étaient pas anodines puisque la victime avait souffert d'un traumatisme crânien et subi cinq points de suture à un doigt. Loin de faire amende honorable, le recourant avait contesté avoir eu recours à la violence en affirmant qu'il trouvait normal qu'une femme ait peur de son ami et qu'il puisse décider de ses fréquentations. Il n'avait pas pris conscience de la gravité de ses actes. A charge, il fallait considérer ses nombreux antécédents. A moins de 25 ans, il avait été condamné à quatre reprises à plus de 48 mois de peine privative de liberté. Il était un multirécidiviste endurci, coutumier des délits de violence. Aucune de ses précédentes condamnations, pas plus que les nombreuses mesures mises en place par le tribunal des mineurs, n'avaient suffi à le contenir. Le recourant n'était pas non plus capable de se comporter correctement en prison où il avait fait l'objet de cinq sanctions disciplinaires.
3.2.2. Pour la cour cantonale, les antécédents du recourant imposaient le prononcé d'une peine privative de liberté. Les infractions commises étaient antérieures à la condamnation à une peine privative de liberté de 200 jours prononcée le 7 février 2019, devenue exécutoire en mars 2020. Si l'ensemble des infractions avaient été jugées simultanément, une peine privative de liberté de 43 mois aurait été prononcée. Les lésions corporelles simples commises le 12 décembre 2018 constituaient l'infraction la plus grave qui aurait été sanctionnée d'une peine privative de 12 mois. Par l'effet du concours, cette peine aurait été augmentée de 18 jours pour l'infraction de violence ou menace contre les autorités et les fonctionnaires du 14 août 2017, de 18 jours pour celles du 26 août 2017, de 18 jours pour celle du 4 novembre 2017, de 18 jours pour celle du 31 janvier 2018 et de 18 jours pour celle du 11 février 2018, de trois mois pour les menaces proférées entre le 25 mai et le 12 juin 2017 et de 20 jours pour la tentative de menace durant la même période, de 10 jours pour la discrimination raciale commise le 11 février 2018, de huit mois pour sanctionner les lésions corporelles simples qualifiées du 23 mars 2018 et de six mois pour celles du 15 décembre 2018, de cinq mois pour les menaces qualifiées proférées le même jour, de trois mois pour le vol du 19 septembre 2018 et de deux mois pour l'infraction à la LArm. La peine complémentaire aurait donc dû être d'un peu plus de 36 mois (43 mois - 200 jours). En vertu de l'interdiction de la reformatio in pejus, toutefois, la peine complémentaire était une peine privative de liberté de 36 mois.
3.3.
3.3.1. Le recourant invoque une réduction de la peine fondée sur son acquittement des infractions de lésions corporelles simples qualifiées et de menaces qualifiées. Dès lors qu'il ne l'obtient pas, cette argumentation est irrecevable.
Selon le recourant, sa peine serait exagérément sévère. La possession d'un couteau papillon ne serait pas le signe d'un mépris complet de l'ordre juridique, l'arme ayant été retrouvée à son domicile et aucun élément du dossier ne démontrant qu'il en aurait fait usage. Le recourant tente, de manière appellatoire et partant irrecevable, de minimiser sa faute. Une telle argumentation révèle de surcroît que l'appréciation de la cour cantonale relative à la prise de conscience inexistante du recourant est fondée.
Le recourant fait grief à la cour cantonale de ne pas avoir tenu compte de l'absence de plainte de la victime et du cadre privé dans lequel les atteintes à l'intégrité corporelle sont intervenues. Au contraire, la cour cantonale a souligné que le fait que les infractions se soient produites dans le cadre d'une relation de couple difficile et qu'aucune plainte n'a été déposée n'avaient aucun effet atténuant, le législateur ayant précisément voulu sanctionner les délits commis dans un contexte où la relation de dépendance, matérielle ou psychique, empêchait généralement la victime de déposer plainte (cf. jugement entrepris, p. 21). Le recourant ne fait que substituer, de manière appellatoire, son appréciation des circonstances dans lesquelles les infractions au préjudice de la victime ont été perpétrées, pour, à nouveau, minimiser sa faute, sans établir en quoi l'appréciation cantonale, qui a retenu que la faute était extrêmement lourde, violerait le droit fédéral.
Par ailleurs, contrairement à ce que prétend le recourant, la cour cantonale n'a pas ignoré les troubles psychologiques qu'il présente et en a tenu compte à décharge. Elle a ainsi observé que même si sa responsabilité pénale demeurait entière selon l'expertise psychiatrique, il était tenu compte de son parcours de vie tumultueux et de sa pathologie psychiatrique (cf. jugement entrepris, p. 21). Il importe peu que la cour cantonale n'ait pas expressément rappelé, au stade de la fixation de la peine, les diagnostics posés par les experts dans leur rapport du 6 mai 2014, détaillés dans la partie "en fait" de l'arrêt cantonal (cf. jugement entrepris, p. 13 s.). Son parcours de vie ressort, quant à lui, de la description de sa situation personnelle (cf. jugement entrepris, p. 9 s.). En effet, le jugement forme un tout et on admet que le juge garde à l'esprit l'ensemble des éléments qui y figurent (arrêts 6B_537/2020 du 29 septembre 2020 consid. 2.2; 6B_906/2019 du 7 mai 2020 consid. 2.3).
Enfin, le recourant soutient que la peine prononcée serait excessive en comparaison d'une autre affaire du même type. Il invoque un jugement du Tribunal cantonal vaudois et souligne que dans le cas précité, la peine infligée serait 4.5 fois inférieure à celle de la présente affaire.
La référence au jugement cantonal est stérile dès lors qu'il n'a pas fait l'objet d'un contrôle par le Tribunal fédéral. Quoi qu'il en soit, il ne permet pas de comprendre en quoi consistaient les faits jugés dans cette affaire et les circonstances personnelles de l'accusé, et encore moins de les comparer à ceux de l'espèce. Cela ne suffit manifestement pas à démontrer une violation des principes régissant la fixation de la peine. Au demeurant, comme le Tribunal fédéral a eu l'occasion de le rappeler à maintes reprises, la comparaison d'une peine d'espèce avec celle prononcée dans d'autres cas concrets est d'emblée délicate, compte tenu des nombreux paramètres qui interviennent dans la fixation de la peine (ATF <ref-ruling> consid. 6.3.2 p. 69). Les critiques du recourant sont partant infondées.
En définitive, la peine a été fixée sur la base de critères pertinents et on n'en discerne pas qui auraient été omis ou pris en considération à tort. Les éléments à prendre en compte ont par ailleurs abouti au prononcé d'une peine qui ne peut être qualifiée d'excessive. La sanction infligée ne viole donc pas l'<ref-law>.
3.3.2. Le recourant prétend que le prononcé d'une peine complémentaire aurait dû conduire la cour cantonale à réduire la quotité de la peine par rapport à celle, non complémentaire, fixée par les premiers juges.
Le recourant perd de vue que la cour cantonale disposait d'un plein pouvoir d'examen en fait et en droit (cf. art. 398 al. 2 et 408 CPP) sur les points attaqués (<ref-ruling> consid. 1.3.3 p. 248; arrêt 6B_249/2016 du 19 janvier 2017 consid. 1.4.1), aussi pour ce qui concerne les pures questions d'appréciation comme la fixation de la peine (arrêt s 6B_798/2017 du 14 mars 2018 consid. 2.4; 6B_812/2015 du 16 juin 2016 consid. 2.1 et les références citées). Le recourant ne conteste pas que les premiers juges n'avaient pas à prononcer de peine complémentaire, dès lors que le jugement du 7 février 2019 pris en compte pour la peine complémentaire n'est devenu exécutoire qu'en mars 2020 (cf. supra consid. 3.2.2), soit après que le tribunal de première instance a statué. Il ne critique pas la quotité de la peine d'ensemble arrêtée en appel, ni la manière dont celle-ci a été fixée. En définitive, l'argumentation du recourant ne fait pas apparaître une violation des règles en matière de fixation de la peine ou de concours rétrospectif. Le grief est rejeté.
4.
Le recourant conteste la réduction du tarif horaire appliqué aux honoraires de son conseil (<ref-law>) et se plaint d'un défaut de motivation à cet égard.
4.1. Aux termes de l'<ref-law>, si le prévenu est acquitté totalement ou en partie ou s'il bénéficie d'une ordonnance de classement, il a droit à une indemnité pour les dépenses occasionnées par l'exercice raisonnable de ses droits de procédure. L'indemnité couvre en particulier les honoraires d'avocat, à condition que le recours à celui-ci procède d'un exercice raisonnable des droits de procédure. L'État ne prend en charge les frais de défense que si l'assistance d'un avocat était nécessaire compte tenu de la complexité de l'affaire en fait ou en droit et que le volume de travail et donc les honoraires étaient ainsi justifiés (<ref-ruling> consid. 2.1 p. 47).
Savoir si le recours à un avocat procède d'un exercice raisonnable des droits de procédure et si, par conséquent, une indemnité pour les frais de défense selon l'<ref-law> peut être allouée au prévenu, est une question de droit fédéral que le Tribunal fédéral revoit librement (<ref-ruling> consid. 3.2.1 p. 169). C'est en premier lieu aux autorités pénales qu'il appartient d'apprécier le caractère raisonnable de l'activité de l'avocat et elles disposent dans ce cadre d'un pouvoir d'appréciation considérable. Le Tribunal fédéral s'impose par conséquent une certaine retenue lors de l'examen de l'évaluation faite par l'autorité précédente; il n'intervient que lorsque celle-ci a clairement abusé de son pouvoir d'appréciation et que les honoraires alloués sont hors de toute proportion raisonnable avec les prestations fournies par l'avocat (<ref-ruling> consid. 3.2.1 p. 169; arrêts 1B_104/2020 du 27 mai 2020 consid. 3.1; 6B_1254/2019 du 16 mars 2020 consid. 10.1).
Selon la jurisprudence, l'indemnité doit correspondre au tarif usuel du barreau applicable dans le canton où la procédure se déroule (<ref-ruling> consid. 3.1.2 p. 169; arrêts 1B_104/2020 précité consid. 3.4; 6B_1341/2019 du 20 février 2020 consid. 2.1). Aux termes de l'art. 26a du Tarif vaudois des frais de procédure et indemnités en matière pénale (TFIP/VD; RS/VD 312.03.1), les indemnités allouées selon les articles 429 ss CPP à raison de l'assistance d'un avocat comprennent une indemnité pour l'activité de l'avocat ainsi que le remboursement des débours effectifs de celui-ci (al. 1). L'indemnité pour l'activité de l'avocat est fixée en fonction du temps nécessaire à l'exercice raisonnable des droits de procédure, de la nature des opérations effectuées, des difficultés de la cause, des intérêts en cause et de l'expérience de l'avocat (al. 2). Le tarif horaire déterminant (hors TVA) est de 250 fr. au minimum et de 350 fr. au maximum pour l'activité déployée par un avocat. Il est de 160 fr. pour l'activité déployée par un avocat stagiaire (al. 3). Dans les causes particulièrement complexes ou nécessitant des connaissances particulières, le tarif horaire déterminant peut être augmenté jusqu'à 400 fr. (al. 4).
4.2. Pour la procédure de première instance, le recourant a réclamé une indemnité correspondant à 24h35 de travail au tarif horaire de 330 francs. La cour cantonale a considéré que le temps consacré au mandat ne prêtait pas le flanc à la critique. Elle a en revanche estimé que le tarif horaire sollicité était trop élevé pour un dossier qui ne présentait pas de difficultés particulières, et qu'un tarif horaire de 250 fr. était adéquat. En appel, la cour cantonale a également admis le nombre d'heures d'activité d'avocat invoqué par le recourant pour la fixation de l'indemnité, soit 17h10. Elle a derechef estimé que le tarif horaire devait être fixé à 250 fr. et non à 330 fr. comme réclamé.
4.3. Invoquant les art. 6 par. 1 CEDH, 29 al. 2 Cst., 112 al. 1 let. b LTF et 3 al. 2 let. c CPP, le recourant reproche à la cour cantonale d'avoir appliqué un tarif horaire de 250 fr. pour calculer l'indemnité fondée sur l'<ref-law> et de n'avoir pas satisfait aux exigences de motivation, violant son droit d'être entendu. Selon lui, la cause avait engendré de nombreuses questions juridiques pointues et complexes. L'argumentation juridique soumises aux premiers juges avait conduit à son acquittement partiel (<ref-law>). La question du concubinage relevait d'une "problématique juridique complexe dont la définition avait fait l'objet de controverses doctrinales et de longs raisonnements de la part du Tribunal fédéral".
4.4. Le recourant n'indique pas quelles "questions juridiques pointues et complexes" auraient été soulevées en première instance. S'agissant du concubinage, les considérations du mémoire de recours ne comprennent pas de développement juridique spécifique qui révélerait la complexité des questions abordées. A cet égard, on relèvera que les faits, bien que contestés, étaient simples (soit déterminer si le recourant faisait ménage commun avec la victime au moment des faits) et qu'il s'agissait d'une problématique ciblée commune aux deux infractions litigieuses, de surcroît tranchée par le Tribunal fédéral. Le recourant ne démontre ainsi nullement en quoi il aurait été insoutenable, pour la cour cantonale, de considérer que le dossier ne présentait pas de difficultés particulières. En définitive, il n'apparaît pas que la cour cantonale aurait excédé la grande latitude dont elle disposait et versé dans l'arbitraire en appliquant le tarif horaire minimal prévu par l'art. 26a al. 3 TFIP/V D. Au surplus, on comprend de la motivation - certes succincte - du jugement attaqué que les autres critères de fixation du tarif horaire évoqués à l'art. 26a al. 2 TFIP/VD - soit le temps nécessaire, la nature des opérations effectuées, les intérêts en cause et l'expérience de l'avocat - ne justifiaient pas l'application d'un tarif horaire supérieur à 250 francs. Cette motivation est dès lors suffisante tant sous l'angle du droit d'être entendu que des exigences de l'<ref-law>. Mal fondé, le grief doit partant être rejeté.
5.
Le recours doit être rejeté dans la mesure où il est recevable. Comme il était dénué de chance de succès, la demande d'assistance judiciaire doit être rejetée (<ref-law>). Le recourant, qui succombe, supporte les frais judiciaires, dont le montant sera fixé en tenant compte de sa situation financière, laquelle n'apparaît pas favorable (art. 65 al. 2 et 66 al. 1 LTF).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
La demande d'assistance judiciaire est rejetée.
3.
Les frais judiciaires, arrêtés à 1'200 fr., sont mis à la charge du recourant.
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 4 novembre 2020
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
La Greffière : Rettby