Hosting refers to the act of providing the backbone of web services to the general public. For example, when you visit italki.com, your computer sends a message to a server (a big, specialized computer that never shuts down), asking what the site looks like. The server sends back a message telling your web browser how to present the webpage. In this case, that server is "hosting" italki.com.
Free hosting (or webhosting) means that the people who own the server do not charge the website's owner (these could be two different people) any money to host their content. Normally, a site like italki.com would pay a hosting company money to provide the hosting service for their site. However, free hosting typically just advertises on your webpage.
Offshore refers to something whose physical location is not within the borders of the country or possibly the continent. Literally, it is "off of the shore". When you have offshore hosting, the location of that server we've been talking about is not in the country where the business is located. So if italki.com is based in the United States, but they have a server in Germany, then that server is considered "offshore hosting".
Free offshore hosting would just be the combination of the two.
I have to admit this is fairly technical material, and if you have any questions, I will do my best to explain in further detail.