There are numerous components to every application you use daily. Consider all the different steps a program does to allow you to open a document. Then type, save the document, and share it by email. Integration testing makes sure the components work individually. It then puts them together to see how they function as a whole group.
Typically, integration testing comes before a whole system test. System tests also check how applications are functioning, but there's one key difference. Integration testing happens in the development phase. It is done to ensure all the pieces of the puzzle fit together. System testing is done to make sure the application being developed functions as it should on a number of platforms, which happens later in the process.
System or functional testing is a QA test done on the full product. System testing is done late in the product development process when an application is almost ready to launch. A proper systems test makes sure all components of the software are functioning well as a whole, before they hit the market. Tests identify weaknesses in individual features, or problems that occur when different sections of code are put together to make the full product. Developers also use systems testing to ensure products function properly on different platforms.