Cut the cauliflower into medium-sized florets. Chop the potatoes into ¾-inch chunks. Place cauliflower and potatoes in a large soup pot and fill with cold water. Season the water heavily with salt. Bring to a rolling boil over the stove. Remove from the heat and drain into a large colander. Set the colander over the pot to keep warm while you prepare the remaining ingredients.
Heat the oil in a large, heavy pot. Add the onions, garlic, and ginger, and saute, stirring every few minutes, for about 8 to 10 minutes, or until the onions are very soft and translucent. Adjust heat if necessary.
Add the ground coriander, cumin, cardamom, red pepper flakes, star anise, and a generous pinch of salt and pepper. Cook, stirring frequently, for 2 to 3 minutes, or until very fragrant. Add the tomatoes with their juices and drained chickpeas, and stir mixture together. Add the drained cauliflower and potatoes, and vegetable broth (or water, if using) to the pot. The liquid should almost reach the top of the vegetable mixture. Bring to a low simmer. Simmer the mixture for 10 minutes, stirring gently. until the cauliflower and potatoes are fork tender.
Stir in the garam masala and coconut milk, simmer for an additional 10 minutes, and season to taste with salt and pepper. This dish requires a heavy hand of seasoning. Finish the soup by sprinkling and stirring in ½ to ¾ cup roughly chopped cilantro. Serve with rice and naan.