Briefly, the Apache Cordova is responsible for making your Javascript code access native resources device, such as camera, GPS, accelerometer, among others. Already the Ionic is a framework that takes care of the visual part of the application, the way it will be presented to the end user, creating appearances very similar to native applications.
As I suppose you’ve read, Ionic was built on top of Cordova, which is the bottom layer, responsible for taking care of the transformation part of the application into packages for each operating system.
Below is a comparison using the same code, but compiled for IOS and Android.
Note that Ionic does the code treatment to leave the appearance according to the system you use, being it Android, iOS, etc.
Apache Cordova works with others frameworks beyond the Ionic, as jQuery Mobile, Dojo Mobile, Sencha Touch, Lungo, Mobile Angular UI.
The conclusion is that they are two different tools, dependent, being the Cordova a bridge to deal with communication with hardware, functioning as "backend" and Ionic to work on issues of appearance for the end user, such as "frontend".
Some that may help: https://answall.com/q/170138/101, https://answall.com/q/79939/101, https://answall.com/q/153243/101, https://answall.com/q/174598/10 and https://pt.stackoverflowcom/q/130973/101
– Maniero