When you set up CloudFlare on your domain the visitors connect not to your web server, they’re connect to CloudFlare.
With Flexible SSL enabled, CloudFlare will talk to your visitors over SSL, but will talk with your web server over non-SSL. This means that the communication channel is not 100% SSL. As always it’s broken up into 2 stages:
Visitor <=> CloudFlare
CloudFlare <=> Your Web Server
The difference now is that with Flexible SSL, the first stage is encrypted. You can’t just pop into CloudFlare and turn on Flexible SSL because with Flexible SSL, the web requests that hit your actual site are actually still “non-SSL”. This means that when your site responds with assets/links, it’s still using the non-SSL protocol: “HTTP://” instead of “HTTPS://”.
If You are not using full SSL then you may find this manual useful:
https://support.cloudflare.com/...ible-SSL-and-Apache-