Fatti: A. Con sentenza del 17 novembre 2017 la Corte delle assise criminali ha dichiarato A._, cittadino italiano e brasiliano nato nel 1992, autore colpevole di tentato omicidio intenzionale, per avere il 24 febbraio 2017, alle 05.30 circa, a V._, tentato di uccidere B._. I fatti in oggetto si sono svolti dopo che l'imputato si era recato con C._ e B._ al carnevale di W._, dove avevano consumato bevande alcoliche e sostanze stupefacenti. Durante il tragitto di ritorno in automobile è sorta una discussione tra C._ e B._ riguardo ad un debito di fr. 280.-- che B._ avrebbe dovuto rimborsare a C._. Giunti a V._, sul piazzale della clinica D._, i tre sono scesi dall'automobile: C._ ha colpito B._ con quattro pugni alla testa e ha tentato di colpirlo con altri tre pugni, sempre diretti alla testa, che tuttavia B._ riusciva a scansare, mentre A._ cercava di allontanare i due contendenti. In seguito, B._ si è diretto a piedi verso il proprio domicilio e A._ è ripartito alla guida della sua autovettura nella stessa direzione, urtando la vittima da tergo con il veicolo. All'esterno, A._ e C._ hanno poi picchiato B._ procurandogli ferite tali da ricoprirgli il viso di sangue. In una fase successiva, A._ e C._ hanno ancora spintonato e colpito la vittima con dei pugni al volto e alla testa. B._ è in seguito caduto a terra e, quando era inerme al suolo, è stato ulteriormente colpito sia da A._ con calci alla testa sia da C._ con calci al fianco e alla parte superiore del corpo. Gli aggressori lo hanno infine trascinato dalla parte opposta della strada, gli hanno sfilato il costume di carnevale che indossava e l'hanno abbandonato a terra tramortito, allontanandosi in automobile. La vittima ha riportato un trauma cranico con frattura scomposta delle ossa nasali, una frattura del processo frontale dell'osso mascellare sinistro, una frattura del setto nasale osseo, una frattura della spina nasale anteriore, una frattura della parete mediale del seno mascellare destro, una frattura del processo traverso sinistro C1, una ferita lacero-contusa sopraciliare sinistra e una ferita lacero-contusa sotto orbitaria sinistra. A._ è inoltre stato riconosciuto autore colpevole di guida in stato di inattitudine, di infrazione alla legge sugli stupefacenti e di ripetuta contravvenzione alla legge sugli stupefacenti. La pronuncia di condanna per questi reati non è contestata. La Corte delle assise criminali lo ha per contro prosciolto dall'imputazione di contravvenzione alla legge sugli stupefacenti limitatamente a un punto dell'atto di accusa e, accertato che aveva agito in uno stato di scemata imputabilità, lo ha condannato alla pena detentiva di tre anni e nove mesi, da dedursi il carcere preventivo sofferto e al pagamento di una multa di fr. 100.--. Ha inoltre ordinato nei suoi confronti l'espulsione dal territorio svizzero per un periodo di cinque anni e un trattamento ambulatoriale ai sensi dell'art. 63 CP. B. A._ ha impugnato dinanzi alla Corte di appello e di revisione penale (CARP) i dispositivi della sentenza di primo grado concernenti la dichiarazione di colpevolezza per il reato di tentato omicidio intenzionale, la commisurazione della pena e l'espulsione. Il Procuratore pubblico ha interposto appello incidentale, chiedendo la condanna dell'imputato a una pena detentiva di quattro anni e tre mesi. Con sentenza dell'8 ottobre 2018 la CARP ha respinto l'appello dell'imputato e ha parzialmente accolto l'appello incidentale del Procuratore pubblico. La Corte cantonale, rilevato che, in mancanza di impugnazione, i dispositivi relativi alle condanne per guida in stato di inattitudine, infrazione alla legge sugli stupefacenti e ripetuta contravvenzione alla legge sugli stupefacenti erano passati in giudicato, ha dichiarato A._ autore colpevole di tentato omicidio per avere, in correità con C._, tentato di uccidere B._ nelle modalità esposte. La CARP lo ha condannato alla pena detentiva di quattro anni, da dedursi il carcere preventivo sofferto, e al pagamento della multa di fr. 100.--. Ha inoltre confermato l'espulsione dal territorio svizzero per un periodo di cinque anni. C. A._ impugna questa sentenza con un ricorso in materia penale del 9 novembre 2018 al Tribunale federale, chiedendo in via principale di essere prosciolto dall'accusa di tentato omicidio e di essere dichiarato autore colpevole di tentate lesioni gravi. Chiede che la sua condanna sia di conseguenza limitata ad una pena detentiva di 24 mesi, sospesa condizionalmente. Postula inoltre l'annullamento della decisione di espulsione dal territorio svizzero e l'esonero dagli oneri processuali relativi alla procedura di appello. In via subordinata, chiede che la causa sia rinviata alla CARP per un nuovo giudizio nel senso dei considerandi e che le sia ordinato di riconoscergli un'indennità per ripetibili relativi all'appello nonché di esonerarlo dall'accollamento di oneri processuali concernenti la procedura di appello. Il ricorrente chiede altresì di essere ammesso al beneficio dell'assistenza giudiziaria e del gratuito patrocinio. Fa valere la violazione del divieto dell'arbitrio nell'accertamento dei fatti e nell'apprezzamento delle prove, la violazione del diritto di essere sentito e la violazione del principio "in dubio pro reo". D. La Corte cantonale ha presentato osservazioni sul ricorso, confermandosi nella sua sentenza. Il Ministero pubblico ha comunicato di rinunciare a formulare una risposta, postulando la reiezione del ricorso. Il ricorrente ha comunicato l'11 ottobre 2019 di non replicare e di confermarsi nel suo ricorso.