In a food processor, pulse the pistachios until roughly chopped. Add the water and sugar and blend until a relatively smooth paste forms.
Transfer the pistachio paste into a medium saucepan; slowly whisk in the milk. Heat over medium heat, whisking occasionally, until the mixture is steamy and hot.
While the milk mixture is heating, use a fork to whisk together the granulated sugar, egg yolks, cornstarch and salt. The mixture will be very thick, but keep stirring it until it is smooth. Once the milk mixture is hot, add about 1/2 cup of the milk to the egg mixture, whisking to combine. Repeat with another 1/2 cup of the milk. (This is called tempering the eggs - it heats them slowly and prevents them from scrambling when they are added to the milk mixture.) Add the tempered egg mixture to the saucepan.
Heat the pudding over medium heat, stirring constantly with a heat-proof spatula, until thick and bubbly, about 3-5 minutes. Remove from heat and stir in butter and vanilla until butter is melted.
Pass pudding through a fine mesh strainer set over a medium bowl. If you would like, add a few of the pistachio bits back into the pudding, taking care not to add any bits of cooked egg that the strainer may have caught.
Spoon the pudding into small ramekins. Wrap with plastic wrap so that the plastic touches the top of the pudding and refrigerate for at least 4 hours or overnight.
Top with chopped pistachios.
Pudding will last, covered in the refrigerator, for up to 4 days. (Well, in theory it will. Ours didn't make it more than a couple of days...)