Android apps don't trust user CA certificates by default (they only work with web browsers.) You have to explicitly enable this option in app manifest.
Rooting the device enables you to put custom certificates in system store, and bypass this check.
In my experience only a very small percentage of the apps where I look at the traffic using Charles Proxy have the certificates pinned. Usually it's the stock apps from Apple that are all cert pinned.
(I know things like Google Apps and such use it, but I'm not sure about less popular ones)