Tear the croissants into 1-2 inch pieces. Spread the croissant pieces evenly in a 9x13 inch baking dish.
In a small saucepan, gently heat the heavy cream and milk over medium-low heat. Add the saffron threads. Stir occasionally and let the saffron steep in the warm milk mixture for about 10-15 minutes. Don't boil the mixture, just keep it warm.
In a large bowl, whisk together the eggs, granulated sugar, ground cardamom, vanilla extract, and salt until well combined and the sugar is mostly dissolved.
Slowly pour a small amount (about ½ cup) of the warm saffron-infused cream mixture into the egg mixture while whisking constantly.
Once the egg mixture is tempered, pour it into the saucepan with the remaining saffron cream. Whisk everything together until smooth.
Pour the custard mixture evenly over the croissant pieces in the baking dish. Gently press down on the croissants to ensure they are submerged in the custard.
Let the mixture sit for at least 30 minutes, or even up to a few hours in the refrigerator.
Preheat your oven to 350°F (175°C). Bake the croissant pudding for 35-45 minutes, or until the custard is set and the top is golden brown.
Let the pudding cool for at least 10-15 minutes before serving. Dust with powdered sugar, and top with whipped cream or vanilla ice cream, if desired.