TL; DR
Well, briefly, Cordova is responsible for getting your Javascript code native resources from the device, such as camera, GPS, accelerometer, among others. Already, the Ionic is a framework that takes care of the visual part of the application , how it will be presented to the end user, creating looks very similar to native apps .
As I assume you have read, Ionic is built on Cordova, that is, Apache Cordova is the bottom layer, which takes care of the transformation part of the application in packages for each operating system.
See below for a comparison using the same code, but compiled for IOS and Android.
RealizethatIonicdoescodehandlingtomakeitlooklikethesystemyouuse,it'sAndroid,iOS,etc.
ApacheCordovaworkswithotherframeworksbesidesIonic,suchas jQuery Mobile , Dojo Mobile , Sencha Touch , Lungo , Mobile Angular UI .
The conclusion is that they are two different, dependent tools, being Cordova a bridge to deal with hardware , functioning as " backend " and Ionic to work in appearance issues for the end user, such as " frontend ".