Faits:
A. Par jugement du 8 mai 2012, la Cour d'appel pénale du Tribunal cantonal vaudois a rejeté l'appel formé par X._ contre le jugement du 17 novembre 2011 du Tribunal correctionnel de la Broye et du Nord vaudois et elle a partiellement admis ceux du Ministère public et de A._. Elle a libéré X._ des chefs d'accusation de lésions corporelles simples qualifiées et de lésions corporelles graves et l'a reconnu coupable d'agression, de vol, de violation de domicile et de contravention à la loi fédérale du 3 octobre 1951 sur les stupéfiants et les substances psychotropes (loi sur les stupéfiants, LStup; RS 812.121). Elle a révoqué le sursis accordé à l'intéressé par le Juge d'instruction de Lausanne le 9 décembre 2008 et a ordonné l'exécution de la peine de 20 jours-amende à 30 francs le jour. Elle a en outre condamné X._ à une peine privative de liberté de douze mois, sous déduction de 4 jours de détention subie avant jugement, ainsi qu'à une amende de 200 francs, cette peine étant partiellement complémentaire à celle prononcée le 10 août 2010 par le Juge d'instruction du Nord vaudois.
B. Cette condamnation se fonde sur les principaux éléments de fait suivants.
B.a Le 11 janvier 2010, X._, C._ et D._, accompagnés d'un tiers, se sont rendus, en début de soirée, chez B._ pour acquérir du cannabis. Lorsque ce dernier a ouvert la porte, il l'a aussitôt refermée en voyant X._ sur le pas de la porte. Celui-ci a voulu forcer le passage en glissant son pied dans l'entrebâillement de celle-ci. B._ lui a alors donné un coup au visage, le faisant tomber à terre; l'intéressé conteste toutefois avoir donné ce coup. X._, C._ et D._ se sont ensuite précipités dans l'appartement pour s'en prendre physiquement à B._. Pour se défendre, celui-ci a distribué des coups de pied à ses assaillants alors qu'il était au sol. Une fois debout, il a sorti un couteau disposant d'une lame de quelques 20 centimètres qu'il portait à sa ceinture, dans le but de faire fuir ses agresseurs. Un vélo a encore été jeté sur lui.
B.b Alertée par un fracas métallique, la colocataire de B._, A._, est sortie de la cuisine. Elle a fait usage d'un spray au poivre qu'elle a vidé pour faire fuir les intrus. D._ lui a ensuite lancé un vélo, dont elle a essayé de se protéger avec les bras.
B.c B._ a présenté une plaie du cuir chevelu importante au niveau fronto-temporal droit, une plaie au niveau du tiers moyen de l'avant-bras, consécutive à un coup donné au moyen d'un objet, ainsi qu'un hématome cutané au niveau du tiers supérieur du bras droit sans plaie.
A._ a souffert d'un hématome traumatique de la main et du poignet droits, d'un hématome de l'avant-bras gauche avec dermabrasion et d'un traumatisme du poignet droit avec fracture de la styloïde cubitale, nécessitant la pose d'un plâtre. Elle a en outre présenté de nombreuses dermabrasions superficielles des doigts de la main gauche. Selon le rapport établi le 2 novembre 2011 par le Dr E._, une neuropathie cubitale s'est développée. Les premiers symptômes sont apparus environ six à huit semaines après la fracture de l'avant-bras gauche. La neuropathie s'est aggravée progressivement et a empêché la victime de manipuler, et en particulier de porter, un objet de la main gauche. Elle a été opérée le 5 décembre 2011. De plus, A._ souffre d'un trouble anxieux majeur généralisé avec phobie sociale ainsi que, depuis le mois de janvier 2010, d'un stress post-traumatique surajouté, aggravant encore sa phobie sociale.
C. X._ forme un recours en matière pénale au Tribunal fédéral contre le jugement du 8 mai 2012. Il conclut à ce que le jugement attaqué soit réformé en ce sens qu'il est libéré des chefs d'accusation d'agression, lésions corporelles simples qualifiées et de lésions corporelles graves, à ce qu'il soit constaté qu'il s'est rendu coupable de vol, de violation de domicile et de contravention à la loi fédérale sur les stupéfiants et à ce qu'il soit condamné à une peine de travail d'intérêt général inférieure à 720 heures et à une amende de 200 francs avec peine privative de liberté de substitution de huit jours. Subsidiairement, il conclut au renvoi de la cause à l'autorité cantonale. Il sollicite en outre le bénéfice de l'assistance judiciaire.
Invités à répondre au recours, la cour cantonale s'est référée aux considérants de sa décision et le Ministère public a conclu au rejet du recours. A._ a également conclu au rejet du recours et sollicité l'octroi de l'assistance judiciaire. B._ ne s'est pas déterminé dans le délai imparti.
Considérant en droit:
1. Le recourant n'a pas été reconnu coupable de lésions corporelles simples qualifiées ou de lésions corporelles graves par la cour cantonale. Ses conclusions tendant à ce qu'il soit libéré de ces infractions sont donc sans objet.
2. Le recourant conteste qu'une infraction à l'art. 134 CP pouvait être retenue à sa charge puisque, contrairement à ce que la cour cantonale avait considéré, le déroulement des événements ne pouvait être décomposé en deux phases et que B._ avait distribué des coups. Dans la mesure où il ne lui avait pas été reproché de s'être rendu coupable de rixe, une telle infraction ne pouvait être retenue à son encontre.
2. Le recourant conteste qu'une infraction à l'art. 134 CP pouvait être retenue à sa charge puisque, contrairement à ce que la cour cantonale avait considéré, le déroulement des événements ne pouvait être décomposé en deux phases et que B._ avait distribué des coups. Dans la mesure où il ne lui avait pas été reproché de s'être rendu coupable de rixe, une telle infraction ne pouvait être retenue à son encontre.
2.1 2.1.1 L'art. 134 CP réprime par une peine privative de liberté de cinq ans au plus ou une peine pécuniaire le comportement de celui qui aura participé à une agression dirigée contre une ou plusieurs personnes au cours de laquelle l'une d'entre elles ou un tiers aura trouvé la mort ou subi une lésion corporelle.
L'agression se caractérise comme une attaque unilatérale de deux personnes au moins, dirigée contre une ou plusieurs victimes, qui restent passives ou se contentent de se défendre. Pour que l'on puisse parler d'une attaque unilatérale, il faut que la ou les personnes agressées n'aient pas eu elles-mêmes, au moment de l'attaque, une attitude agressive, impliquant que le déclenchement de la bagarre, en définitive, dépendait surtout du hasard. L'art. 134 CP ne sera retenu à la place de la rixe (art. 133 CP) que si l'on discerne clairement une attaque unilatérale (cf. Bernard Corboz, Les infractions en droit suisse, vol. I, 2ème éd., 2010, n. 6 ad art. 134 CP; Stratenwerth/Jenny/Bommer, Schweizerisches Strafrecht, Besonderer Teil I, 7ème éd., 2010, § 4 n° 38 p. 93).
2.1.2 Selon l'art. 133 CP, celui qui aura pris part à une rixe ayant entraîné la mort d'une personne ou une lésion corporelle sera puni d'une peine privative de liberté de trois ans au plus ou d'une peine pécuniaire (al. 1). N'est pas punissable celui qui se sera borné à repousser une attaque, à défendre autrui ou à séparer les combattants (al. 2).
A la différence de l'agression, la rixe est une altercation physique réciproque entre au moins trois personnes qui y participent activement (ATF 131 IV 150 consid. 2.1 p. 151; 104 IV 53 consid. 2b p. 57). Le comportement punissable consiste à participer à la bagarre. La notion de participation doit être comprise dans un sens large. Il faut ainsi considérer comme un participant celui qui frappe un autre protagoniste, soit toute personne qui prend une part active à la bagarre en se livrant elle-même à un acte de violence (ATF 131 IV 150 consid. 2.1 p. 151; 106 IV 246 consid. 3e p. 252; Corboz, op. cit., n. 5 ad art. 133 CP).
Lorsqu'une personne a une attitude purement passive, ne cherche qu'à se protéger et ne donne aucun coup, on ne peut soutenir qu'elle participe à la rixe (ATF 137 IV 1 consid. 4.2.2 p. 4). En effet, celle-ci exige une certaine forme de participation, soit un combat actif, effectif et réciproque entre au moins trois personnes. Si l'une des trois ne se bat pas et n'use pas de violence pour repousser l'attaque, il n'y a pas de rixe. Dans un tel cas, on retiendra l'agression, les voies de fait, les lésions corporelles ou l'homicide (cf. ATF 106 IV 246 consid. 3e p. 252; 94 IV 105; 70 IV 126). En revanche, quand une personne a une attitude active, mais purement défensive ou de séparation, c'est-à-dire distribue des coups, mais exclusivement pour se protéger, défendre autrui ou séparer les combattants, on a alors affaire à une rixe (ATF 131 IV 150 consid. 2.1.2 p. 153; 94 IV 105). Dans ce sens, la jurisprudence a précisé que du moment où la loi accorde l'impunité à celui qui s'est borné à se défendre (art. 133 al. 2 CP), elle admet qu'il est aussi un participant au sens de l'art. 133 CP (ATF 106 IV 246 consid. 3e p. 252).
2.2 La cour cantonale a considéré que B._, qu'il se soit limité à repousser le recourant en lui fermant la porte au nez ou qu'il lui ait effectivement asséné un coup, avait manifesté sa volonté de mettre fin à l'incident. Pour lui, l'épisode était alors clos et rien ne lui permettait de s'attendre à une agression. Le possible coup de poing et la volonté de B._ de fermer la porte à ses visiteurs importuns marquait une interruption dans le déroulement des événements qui excluait la rixe, même si cette interruption n'avait duré que quelques secondes. De plus, les victimes n'avaient pas donné de coups dans le dessein de participer à la bagarre, pour autant même qu'elles en aient assénés. En particulier, l'intervention de B._ n'avait été que défensive, y compris en ce qui concerne l'exhibition du couteau, dont il n'avait pas fait usage. Aucun des intrus n'avait été blessé à l'arme blanche, ni même n'avait dû esquiver un coup de couteau et le spray au poivre utilisé par A._ était un instrument de défense. Les victimes avaient été la proie d'une attaque unilatérale. L'agression était dirigée aussi bien et dans la même mesure contre l'une et l'autre des victimes. Rien ne permettait de retenir qu'elles avaient réagi au-delà de ce qui était nécessaire pour se défendre. Les appels des prévenus tendant à leur libération du chef d'accusation d'agression devaient donc être rejetés.
2.3 Il a été constaté que le recourant et ses comparses s'étaient rendus chez B._ pour lui acheter du cannabis, non pour le frapper. Ils ne se sont pas précipités dans l'appartement de celui-ci dès qu'il a ouvert la porte, mais uniquement après qu'il a repoussé le recourant et l'a fait tomber. L'attaque dont B._ a ensuite fait l'objet résulte ainsi directement de ce premier différend. Scinder l'action en deux phases distinctes, comme l'a fait la cour cantonale, alors que l'interruption entre celles-ci n'a été que de quelques secondes, est artificiel et ne correspond pas à la logique des événements. Ceux-ci forment au contraire une unité matérielle. Il ne peut ainsi être fait abstraction du comportement de B._ après qu'il a ouvert sa porte pour qualifier les faits reprochés au recourant.
Il ressort des constatations cantonales qu'à cette occasion, B._ a donné, sans autre sommation, un coup de poing au recourant. Un tel geste n'était pas purement défensif, mais il constitue au contraire une marque claire d'agressivité. B._ aurait pu s'opposer au recourant qui tentait de forcer le passage pour entrer dans son appartement en le repoussant par les épaules, par exemple, sans directement le frapper d'un geste qui doit être qualifié de brutal et excessif. Le fait que B._ avait dû, quelques jours auparavant, exhiber un couteau pour faire partir le recourant n'est, pour le surplus, pas déterminant dans la mesure où il n'est pas constaté qu'à cette précédente occasion, il aurait été agressé physiquement et aurait ainsi pu d'emblée craindre pour son intégrité corporelle lorsqu'il a ouvert la porte. Dès lors, les violences commises par le recourant après avoir pénétré dans l'appartement de B._ ne peuvent être qualifiées d'unilatérales au regard de l'art. 134 CP. La cour cantonale a indiqué que B._ contestait avoir donné un coup de poing et, dans son raisonnement en droit, que peu importait la nature exacte du geste de B._, qu'il ait frappé ou simplement repoussé le recourant. Ces précisions ne peuvent être comprises comme une remise en cause du fait que l'intéressé a bien donné un coup de poing, ce que le Ministère public ne fait d'ailleurs pas valoir. En effet, l'autorité précédente n'a pas indiqué qu'elle entendait s'écarter des constatations des premiers juges qui ont considéré que les dénégations de B._ n'étaient pas crédibles en tant qu'il contestait avoir donné un tel coup. En outre, elle a envisagé l'hypothèse où B._ n'aurait pas frappé le recourant uniquement pour affirmer que, quelle que soit l'hypothèse retenue, l'intéressé avait manifesté sa volonté de mettre fin à l'incident et ainsi renforcer sa solution selon laquelle les événements s'étaient déroulés en deux phases distinctes.
En définitive, la décision attaquée viole le droit fédéral en tant qu'elle considère que l'attaque du recourant était unilatérale et reconnaît celui-ci coupable d'agression selon l'art. 134 CP. Le recours est admis à cet égard et la cause est renvoyée à l'autorité cantonale afin qu'elle statue à nouveau. Vue l'issue du litige, il n'y a pas lieu d'examiner les griefs soulevés par le recourant relatifs à la fixation de la peine.
3. Le recours est admis. L'arrêt attaqué est annulé en tant qu'il reconnaît le recourant coupable d'agression et la cause est renvoyée à l'autorité cantonale afin qu'elle statue à nouveau dans le sens des considérants.
Le recourant qui obtient gain de cause peut prétendre à une indemnité de dépens à verser à son conseil pour la procédure devant le Tribunal fédéral (art. 68 al. 1 et 2 LTF), ce qui rend sans objet sa demande d'assistance judiciaire. Il ne supporte pas de frais (art. 65 al. 2 et 66 al. 1 LTF). A._ a sollicité l'assistance judiciaire. Ses conclusions n'étaient pas dénuées de chances de succès et sa situation économique justifie l'octroi de l'assistance judiciaire (art. 64 al. 1 LTF).
Par ces motifs, le Tribunal fédéral prononce:
1. Le recours est admis, l'arrêt attaqué annulé et la cause renvoyée à l'autorité cantonale pour qu'elle statue à nouveau dans le sens des considérants.
2. Il n'est pas perçu de frais judiciaires.
3. Une indemnité de 3'000 francs, à payer au conseil du recourant à titre de dépens, est mise à la charge du canton de Vaud.
4. La demande d'assistance judiciaire du recourant est sans objet.
5. La demande d'assistance judiciaire de A._ est admise et la Caisse du Tribunal fédéral versera à Me Alexa Landert une indemnité de 1'000 francs à titre d'honoraires d'avocat d'office.
6. 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 7 janvier 2013
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président: Mathys
Le Greffier: Rieben