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 recommends for al dente, 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 or baking sheet.
In a saucepan over medium heat, melt the butter. Add the flour and cook, stirring, until lightly toasted, about 2 minutes.
Whisk in the milk, a large pinch of salt, and several grinds of black pepper. Cook, stirring frequently, until the sauce thickens to the consistency of a thin gravy, about 6–8 minutes. Remove from heat and let the béchamel cool slightly.
In a large bowl, beat the egg. Stir in the ricotta, squeezed spinach, 1½ cups of the shredded mozzarella, ½ cup of the grated Parmesan, ½ cup of the pesto, a large pinch of salt, and several grinds of black pepper until combined.
Stir the remaining ½ cup of pesto into the slightly cooled béchamel sauce until smooth.
Spray a 9×13-inch baking dish with nonstick spray and spread about one quarter of the pesto-béchamel on the bottom of the dish.
Spread roughly 1/3 cup of the ricotta-spinach mixture evenly over each lasagna noodle, then roll up starting from the short end. Place each roll seam-side down in the prepared baking dish.
Spoon the remaining pesto-béchamel evenly over the rolls. Sprinkle with the remaining 1 cup of mozzarella and the remaining ¼ cup of 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 oven, sprinkle with crushed red pepper flakes if desired, and let stand at least 5 minutes before serving.