Preheat oven to 400°.
To prepare pudding, trim crusts from bread. Arrange bread slices in a single layer on a baking sheet; brush with melted butter. Bake at 400° for 8 minutes or until toasted.
Remove bread from oven; cool 5 minutes on a wire rack. Cut each slice into 4 squares. Arrange squares in overlapping rows in an 11 x 7-inch baking dish coated with cooking spray.
Combine evaporated milk, 3 tablespoons sugar, and rose-flower water, if desired, stirring well with a whisk. Pour mixture evenly over bread. Cover with foil; chill 30 minutes or up to 4 hours.
Preheat oven to 350°.
Bake pudding, covered, at 350° for 15 minutes.
To prepare sauce, combine 2 tablespoons sugar and egg yolks in a medium bowl, stirring well with a whisk. Heat whole milk in a small, heavy saucepan over medium heat to 180° or until tiny bubbles form around the edge (do not boil). Gradually add hot whole milk to egg yolk mixture, stirring constantly with a whisk.
Place milk mixture in pan; cook over low heat 6 minutes or until mixture coats the back of a spoon, stirring constantly with a whisk. Remove from heat; stir in cardamom.
Place pan in a large ice-filled bowl for 5 minutes or until sauce cools to room temperature, stirring occasionally.
Arrange 6 warm bread pudding squares on each of 6 dessert plates. Top each serving with about 2 1/2 tablespoons sauce and 1/2 teaspoon pistachios.