Preheat the oven to 425°F (220°C).
Bring a large pot of salted water to a boil and cook the lasagna noodles 1 minute longer than the package's al dente time so they are tender but not falling apart; drain, rinse with cold water, and lay the noodles in a single layer on a cutting board.
Make the béchamel: melt the butter in a saucepan over medium heat, stir in the flour and cook, stirring, about 2 minutes until lightly toasted.
Whisk in the milk, add a large pinch of kosher salt and a few grinds of black pepper, and cook, stirring frequently, until the sauce thickens to the consistency of a thin gravy, about 6–8 minutes; remove from heat and let cool slightly.
In a large bowl, beat the egg, then stir in the ricotta, squeezed spinach, 1½ cups of the mozzarella, ½ cup of the Parmesan, ½ cup of the pesto, a large pinch of salt, and a few grinds of pepper until evenly combined.
Stir the remaining ½ cup pesto into the slightly cooled béchamel to make a pesto-bechamel sauce.
Spray a 9×13-inch baking dish with nonstick spray and spread one-quarter of the pesto-bechamel on the bottom of the dish.
Spread about 1/3 cup of the ricotta mixture evenly over each lasagna noodle, then starting at the short end roll each noodle up tightly and place seam-side-down in the prepared dish.
Spoon the remaining pesto-bechamel over the assembled rolls, then sprinkle with the remaining 1 cup mozzarella and 1/4 cup Parmesan.
Cover the dish with foil and bake until the rolls are heated through and the sauce is bubbling, about 20 minutes; remove the foil and bake until the cheese is browned on top, about 10 minutes more.
Remove from the oven, sprinkle with crushed red pepper flakes if desired, and let stand at least 5 minutes before serving.