Faits: A. Par jugement du 11 décembre 2007, le Tribunal de police de l'arrondissement de l'Est vaudois a condamné X._ à une peine de 15 jours-amende à 50 fr. l'un, avec sursis pendant 2 ans, pour diffamation, injure et menaces. Statuant sur recours du condamné, la Cour de cassation pénale du Tribunal cantonal vaudois l'a rejeté par arrêt du 6 février 2008, confirmant le jugement entrepris. B. Cet arrêt repose, pour l'essentiel, sur les constatations de fait suivantes. A plusieurs reprises, depuis son domicile, X._ a crié des injures et menaces à l'égard du syndic de sa commune, A._. Le 19 août 2005 vers 06h15, il l'a traité de "pourriture de syndic de merde, salaud, petit con, trou du cul, saloperie de A._, je te crèverai". Il s'est aussi adressé dans des termes semblables à des tiers qu'il estime responsables de la dégradation de sa situation économique. Le 15 novembre 2006, dans une lettre à la commission de police de la commune, il a traité A._ de "scélérat, de parasite et de lâche". Ce dernier a déposé plainte. Le 17 janvier 2006, X._ a apostrophé B._ qui fumait une cigarette, en ces termes: "crève charogne, pollueur, je vais te faire la peau, je vais te massacrer, espèce de trou du cul". B._ a déposé plainte. C. X._ recourt au Tribunal fédéral. Il conclut à l'annulation de l'arrêt attaqué, à ce qu'il soit constaté que la plainte de B._ est sans objet, à l'application de l'art. 177 al. 2 CP en ce qui concerne celle de A._ et à la reconnaissance d'une lésion de ses droits en tant que l'arrêt attaqué lui oppose l'art. 49 al. 2 CP; en conséquence, il demande que la moitié des frais de la cause soient mis à la charge des plaignants. Les intimés ont renoncé à se déterminer. Le Ministère public et l'autorité cantonale se réfèrent à l'arrêt attaqué. 