This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
It depends where you are living! I am in the UK, so here's how it looks from here:
"Onshore" - this means "in the same country", so it usually means that the people doing the work are in the same country as the customer. Here in the UK, "onshore" obviously means "in the UK".
"Offshore" - this means "in another country", i.e. the people doing the work are in a different country from the customer. From a UK perspective, "offshore" usually means India, although other countries are used for offshore work as well e.g. Vietnam, Philippines etc.
"Nearshore" - this means "in a nearby country", so if the customer is in the UK, then this would usually mean the work is being done somewhere in Europe e.g. Poland. The reasons for picking a "nearshore" country include things like similar timezones and (often) similar cultural background, which can make communications easier.
Obviously, if you are in the USA, then you will have a different set of "onshore"/"nearshore" countries, but "offshore" is likely still to mean India, China, Vietnam, Brazil etc.
"Onsite"/"offsite" - this is a slightly different question: If the customer pays a company XYZ to do some work, the work can be done at the customer's offices (onsite) or at XYZ's offices (offsite). Usually any work that is being done offshore is also being done offsite. However, some big companies in the UK also have offices in India, so they might send work "offshore", but they could claim the work is still being done "onsite", because it is being done in their own offices. It depends on your perspective.