To simplify:
* Any change in file contents changes both the `mtime` and the `ctime`.
* Any change in metadatas (permissions and other information shown by `stat`) changes only `ctime`.
When is it useful: I don't know… But for example, if you want an over-approximation for the time when the last link (`ln`) to the inode was created, you should check `ctime` not `mtime`.