An operating system is a set of software that makes a computer work. It is the back bone of all software in a computer, allowing other software to be installed and executed. Without an operating system, you cannot use a computer.
A kernel is the most important element of an operating system. For an OS to work, it needs a kernel. The task of the kernel is to handle hardware resources (memory allocation, disk access, device usage...). It sits in between the hardware and the software being executed.
The other software that are essential for an OS to be complete are: user interfaces, drivers, compilers, file managers, update managers, developer tools, calculators, text editors, games... An OS is not a clearly defined software, it is an ensemble of software. There are different points of view about what are the software that should be considered as part of an OS. What most people agree though, is that the OS is a collection of software that make a computer work.
Most of the time there is no reason to differentiate an OS from its kernel. Nevertheless, it is important to know the difference in order to understand the difference between Linux and GNU/Linux. Strictly speaking, Linux is not an operating system, it is a kernel. Although it is very common to call any Linux-based operating system as 'Linux'. GNU/Linux is the operating system that combines the Linux kernel and GNU software. GNU alone is not (quite) an operating system either because there is no functional kernel. The GNU project developed a kernel called HURD but it is not stable enough to make of GNU a complete OS. There are also different points of view here. Richard Stallman considers that GNU is an operating system and Linus Torvalds considers that Linux is an operating system (The human tragedy behind Free Software).
What most people call “Linux” is often a “GNU/Linux” OS. For example: Debian, Ubuntu or Fedora are GNU/Linux operating systems. Android, on the other hand, is an OS that is based on Linux (the kernel) but it is not a GNU/Linux OS... and nobody calls it Linux by the way.
In spite of the fact that most of the code of a GNU/Linux platform was written for GNU, the name Linux is by far the most popular. This is a little bit like calling our planet “Earth” although 70% of it's surface is filled by oceans. Maybe the name “Water” would be the most appropriate?