Place cauliflower and sweet potato pieces on separate cookie sheets; toss with olive oil and 1 teaspoon salt and spread evenly. Bake 20 minutes or until browned and slightly crispy on edges. Set aside.
Meanwhile, heat 1 tablespoon olive oil in a large saucepan on medium heat. Add chicken and cook through, about 7 minutes. Remove from pan onto a plate. When slightly cooled, cut into small pieces.
Add remaining oil, onion, and curry powder to pan. Cook, stirring frequently, until onion is very soft, about 5 minutes. Add garlic and cook about 1 minute. Add coconut milk, carrots, tomatoes (with juice), water, remaining salt, and pepper. Cover and cook 4 minutes.
Add green beans and continue cooking until beans are tender, about 5 minutes. Mix in chicken, cauliflower, and sweet potatoes.
In a medium pot, combine rice and water. Bring to a boil, then reduce heat to medium. Cook uncovered 20–30 minutes, stirring every 5 minutes. Rice should absorb most of the water and have a sticky texture when done. Set aside.
Open cans of mango and grapefruit. Separate fruit from juice, reserving both. In a small saucepan over medium heat, whisk together lemon zest, sugar, and cornstarch. Slowly add lemon, mango, and grapefruit juice, whisking constantly so cornstarch doesn’t create lumps. Bring to a boil. Whisk constantly for 3–4 minutes until sauce has thickened.
In a shallow pan, toast coconut over high heat, being careful not to burn.
In serving bowls, scoop rice and top with mango and grapefruit slices. Drizzle with sauce; top with coconut. Serve warm.