Generally, a rigidbody use with a CharacterController will have its Is Kinematic setting switched on, so it will not react to physics, hence the “indestructible” character you are seeing here. One way to handle this is to turn off the Is Kinematic setting just before the explosion happens to enable the character to be affected by the physics.
One way to get all the colliders within range of an explosion is to use the Physics.OverlapSphere function. This returns all colliders within a given range of a point. You can then use the colliders’ rigidbody component to apply the force (rigidbody.AddExplosionForce is an easy way to handle this).
You can control your character through Rigidbody and its better because it can interact with physics.
Use rigidbody.MovePosition() to move and enable Freeze rotation in the editor(on rigidbody component). Remember to use physics based functions on FixedUpdate() instead of Update()