Citation: 6B_761/2021 E. 5

Au vu de ce qui précède, le recours doit être partiellement admis, le jugement attaqué annulé et la cause renvoyée à la cour cantonale pour nouvelle décision dans le sens des considérants. Pour le surplus, le recours est rejeté, dans la mesure où il est recevable. Le recourant, qui obtient partiellement gain de cause, peut prétendre à des dépens réduits, à la charge du canton de Vaud (art. 68 al. 1 LTF), ce qui rend sans objet sa demande d'assistance judiciaire. Le recourant, qui succombe en partie, supportera une partie des frais judiciaires, fixée en tenant compte de sa situation financière qui n'apparaît pas favorable (art. 66 al. 1 LTF). Par ces motifs, le Tribunal fédéral prononce :