Position an oven rack to the middle position and preheat the oven to 425 degrees F.
Bring a large pot of salted water to a boil. Cook the lasagna noodles 1 minute longer than the package directions for al dente. The pasta should be tender enough that it will roll without cracking. Drain well and rinse with cold water. Lay in a single layer on a baking sheet.
Meanwhile, melt the butter in a medium saucepan over medium heat. Add the flour and cook, stirring, until lightly toasted, about 2 minutes. Whisk in the milk, a large pinch of salt and a few grinds of pepper. Cook, stirring frequently, until the sauce thickens and is the consistency of a thin gravy, 6 to 8 minutes. Allow the bechamel sauce to cool slightly.
Beat the egg in a large bowl and then stir in the ricotta, spinach, 1 1/2 cups of the mozzarella cheese, 1/2 cup of the Parmesan, 1/2 cup of the pesto, a large pinch of salt and a few grinds of pepper. Stir the remaining 1/2 cup pesto into the slightly cooled bechamel sauce.
Brush a 13- by 9- inch baking dish with oil. Spread 1/4 cup of the pesto-bechamel sauce on to the bottom of the dish.
Lay half of the cooked lasagna noodles on a clean work surface and spread 1/3 cup of the ricotta mixture evenly over each. Starting with a short end, roll each noodle up. As you make the rolls, transfer them to the prepared baking dish seam-side down. Repeat with the remaining noodles and ricotta mixture. Spoon the remaining pesto-bechamel sauce over the lasagna rolls and sprinkle with the remaining 1 cup mozzarella and 1/4 cup Parmesan. Cover 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. Sprinkle with crushed red pepper, if using, and let stand for 5 minutes before serving.