Lightly brush corn ears with olive oil. Over medium-high heat, heat a grill or cast iron skillet until very hot. Place the corn in the pan and using tongs, cook for about 6 to 8 minutes, turning on sides as needed, or until corn is nicely charred.
On a cutting board, place an ear of grilled corn flat on and cut down one side of the cob to remove the kernels. Turn the cob so the cut side is on the bottom and continue cutting and turning until all the kernels are removed. Repeat with the remaining corn ears. Discard the cobs and set aside corn kernels.
In a large, heavy-bottomed pot over medium heat, add bacon. Cook, stirring occasionally until it renders fat and crisps. With a slotted spoon, remove from pan and drain on paper towels. Discard fat except for about 1 tablespoon.
Add onions and cook, stirring regularly, for about 2 to 3 minutes or until softened. Add garlic and cook, stirring regularly, for about 1 minute.
Add chicken broth and bay leaf.
Bring to a boil. Add potatoes and cook for about 5 to 7 minutes or until halfway tender.
Add grilled corn, reserving about 1/4 cup for garnish if desired.
Lower heat and add 1 cup of the milk. Add cayenne pepper and season with salt and pepper to taste. Simmer for about 2 to 3 minutes.
In a bowl, combine the remaining 1/2 cup milk and flour. Stir until smooth. Gently add mixture to pot, whisking vigorously to prevent lumps. Continue to cook for about 7 to 10 minutes or until liquid is thickened and potatoes are tender.
Add bacon, reserving about 2 tablespoons, and stir. To serve, ladle into serving bowls, garnish with reserved grilled corn, bacon and green onions. Serve hot.