Faits : A. Par jugement du 13 avril 2015, le Tribunal correctionnel de l'arrondissement de l'Est vaudois a reconnu X._ coupable d'infraction grave à la LStup (RS 812.121), de complicité d'infraction à la LStup, de contravention à la LStup et d'infraction à la LEtr (RS 142.20). Il l'a condamné à une peine privative de liberté de 2 ans avec sursis pendant 5 ans, sous déduction de 195 jours de détention provisoire et 66 jours d'exécution anticipée de peine. Il a prononcé une amende contraventionnelle de 100 fr. et fixé à un jour la peine privative de liberté de substitution. Il a révoqué un sursis assortissant une peine pécuniaire de 15 jours-amende prononcée le 12 décembre 2013. Enfin, il a constaté que le prévenu avait été détenu dans des conditions illicites de détention provisoire pendant 27 jours et lui a alloué une indemnité de 1'350 fr. à titre de réparation du tort moral, à la charge de l'Etat de Vaud. B. B.a. Statuant le 26 août 2015, la Cour d'appel pénale du Tribunal cantonal du canton de Vaud a rejeté l'appel du prévenu contre le jugement précité, qu'elle a entièrement confirmé. B.b. La condamnation pour les infractions à la LStup repose sur les faits suivants: Entre le mois de décembre 2013 et le 16 janvier 2014 (pour le moins), X._ a consommé de la marijuana dans une quantité indéterminée et a vendu 4,5 grammes de cocaïne pure (compte tenu d'un taux de pureté de 17 % et de boulettes de 0,71 grammes). Pendant la même période, il a participé à de nombreuses reprises, en faisant le guet, à des transactions entre A._ et B._ portant sur une quantité comprise entre 26 et 52 boulettes de cocaïne. La quantité de cocaïne pure représentait environ 7,8 grammes (compte tenu d'un taux de pureté de 25 % et de boulettes de 1,2 gramme). Le 16 janvier 2014 vers 22h00, un individu a livré 106 grammes de cocaïne - correspondant à 51,3 grammes de substance pure - dans un appartement occupé, à ce moment-là, par le prévenu, A._ et C._. X._ a été interpellé vers 22h15, alors qu'il sortait de l'appartement. C. X._ forme un recours au Tribunal fédéral contre le jugement cantonal dont il demande la réforme en tant qu'il porte sur les infractions à la LStup, d'une part, et sur le montant alloué en raison des conditions illicites de détention, d'autre part. Il conclut, avec suite de frais et dépens, à sa condamnation pour infraction simple à la LStup, contravention à la LStup et infraction à la LEtr, à une peine privative de liberté de 6 mois avec sursis pendant 5 ans et à une amende de 100 fr., ainsi qu'au versement d'un montant de 2'700 fr. à titre d'indemnité pour tort moral. Enfin, il sollicite l'assistance judiciaire.