Say I download an executable like Pycharm from Jetbrains.com. HTTP was used to deliver contents of the website - is this also used when I download the file? I read that FTP was used but also saw it's been disabled for modern browsers - what is the recommended protocol?
Look at the URL shown in your downloads list – if it says
https://, then yes, HTTP was used to download the file.
Nearly all file downloads from websites (and even most downloads not from websites, such as game updates) are nowadays done via HTTP.
There aren't many alternatives. Anonymous FTP used to be more common in the past, but several aspects of its design are problematic nowadays (FTP actually predates the TCP/IP of the Internet), such as its usage of separate "data" connections resulting in firewall-related problems. Anonymous NFS (WebNFS) never became a thing, either.
Also, if there is a network disruption, sometimes I can resume the download without losing progress. Is this because a "session" was created and I can rejoin the session and continue the download?
No; the resumption mechanism is stateless, as is most everything else about HTTP.
When you're requesting a static file (as opposed to a dynamically generated webpage), the browser can ask for a specific range instead of the whole file. For example, if your download stopped after 12300 bytes, you can resume at any time by including a
Range: 12301- header.
So as long as the file still exists, all you need to do is keep re-requesting the same URL with an appropriate Range header added. (Browsers additionally use the If-Match header to make sure the file hasn't changed.)
There are websites which offer downloads limited to a specific session (either as a cookie, or a special token embedded in the URL). Those downloads are still resumed using the same range requests as before – while the web server may decide that your URL has expired and prevent continuing the download at all, it has nothing to do with the actual resumption mechanism.
(And, sure, a website could serve the download entirely through a dynamic script. In this case it's up to the programmer whether they handle range requests or not. For example, when downloading a zipped folder from Google Drive, the .zip file is generated on the go; even its "total size" is unknown – in this case, the file likely won't be resumable at all.)