Croissants are notoriously difficult to make. Even beyond the immense skill and patience required, you need to deal with the weather. A slight change in air temperature, humidity or even the heat in your hands can radically change your final product.
Whether they're yeast raised and prepped by a baker, or more patisserie in style and baked at high temperatures so steam separates the layers, there are a few things that mark a good croissant. It should be crisp but not overly crumbly. The dough within should be buttery and fluffy. When you pull at the sides, it should stretch rather than break.
This is the ideal, but even the best bakeries and pastry chefs have off days. These operators are the most consistent. They get closest to that dream every day. Just make sure to get in early – you'll never find a good croissant in the afternoon.