OK. I will try my best and you can search for more (from now CF = Cloudflare).
Cf has a large network of servers spread over the world. When you use CF it acts as a proxy between your clients and your server (origin in CF terminology). Each client connects to a server of CF which is close to him. These servers we name edge servers (since they are very close to client). By default CF caches static resources (not HTML by default, but you can change default behaviour by page rules) upon the first request at the edge server where the request comes. Edge servers don’t sync on cached items and work independently. Now when you change something on your server then first question is if it changes something cached or not. So if you are using default settings then if CSS, JS, images, etc are gonna change then what edge servers have is different from your origins. You can let the cache expire but in some cases it will result in some breaks in website. You see following these all reasoning and at the end not even sure about the conclusion doesn’t worth the headache. So purging the cache in a non peak time it a good practice.
If your website has mostly static, informational content, you can create a couple of page rules to make CF cache the generated HTML pages, which as @Xaq has mentioned, are not cached by default:
Rocket Loader: Off
Security Level: High
Cachel Level: Cache Everything
Edge Cache TTL: 1 day
Browser Cache TTL: 4 hours
If you use the Clouflare Plugin, you can switch on the Automatic Cache Management feature, and it will purge the relevant cached pages whenever you change content, or purge everything when you modify a theme or add certain plugins. It will purge the Autoptimize cache automatically, but not the Siteground Optimizer dynamic page cache, if you have it turned on, you’d need to do it yourself.