Preheat oven to 400 degrees F. Place cauliflower florets on a rimmed baking sheet and drizzle with 2 tablespoons olive oil. Roast cauliflower for 30 to 35 minutes until fork tender and golden brown.
Place a large saucepan or Dutch oven over MEDIUM heat. Add chopped bacon and cook until crispy. Use a slotted spoon to transfer bacon to a plate and set aside.
Pour off most of the bacon fat from the pan, leaving behind about 1 tablespoon. Add remaining tablespoon of olive oil to the pan and add diced onion, carrot, and celery. Cook for several minutes, stirring often until vegetables have softened. Add minced garlic, ½ teaspoon salt, and thyme and cook just until garlic is fragrant.
Add roasted cauliflower and broth to the pan. Bring to a boil then reduce heat to LOW, tuck bay leaf into soup and cover and simmer for 15 minutes.
Remove bay leaf and use an immersion blender to purée slightly, leaving some of the cauliflower chunky to add texture to the soup. Alternately, you can carefully transfer about ¾ of the soup into a blender and purée until smooth, working in batches if necessary. Add puréed soup back into the pot.
Stir in milk and corn. If using frozen corn, there is no need to thaw it first. Simmer, stirring occasionally, for 3 or 4 minutes or until milk and corn are warmed through. Stir in the Parmesan cheese, remaining 1/2 teaspoon salt, fresh ground black pepper, and half of the cooked bacon.
Taste and season with additional salt and pepper, if needed. Garnish with reserved bacon, fresh parsley, and additional cheese.