Preheat oven to 400°F and line a rimmed baking sheet with parchment paper.
Remove stem core and leaves from cauliflower and cut into bite-size pieces. Add to a bowl and pour over ½ can of coconut milk. Use tongs to coat cauliflower.
Mix together 1 teaspoon garam masala, 1 teaspoon paprika, and ½ teaspoon salt, and sprinkle over the cauliflower. Toss to coat, then spread cauliflower in an even layer on baking sheet. Roast for 30 minutes.
Meanwhile, make the sauce. Heat olive oil in a large sauté pan over medium. Add onion and cook for 5 minutes, then add the garlic and cook another 30 seconds.
Mix together remaining garam masala, paprika, and salt, along with the rest of the spices, and sprinkle over the onion. Cook for 1 minute, until very fragrant.
Pour in the tomatoes and mix, scraping the bottom of the pan to release any stuck bits. Pour in the remaining coconut milk and stir to combine. Bring to a boil, then reduce heat to low and simmer.
Once the cauliflower is done roasting and tender, add to the curry sauce and simmer for 10 minutes, stirring occasionally. Serve with rice and naan.