For me there isn't really a huge difference between the two and in some establishments the terms could be used interchangeably. Everywhere is different. I would try and explain it like so:
System testing: You're testing the whole system i.e. all of it's components to ensure that each is functioning as intended. This is more from a functional side to check against requirements.
End to end testing: This is more about the actual flow through a system in a more realistic end user scenario. Can a user navigate the application as expected and does it work. You're testing the workflow.
For example if you were to test an e-commerce site the shop front:
System test: browsing for items, cart and checkout would all work fine.
End to end test: You may then find issues with the workflow of moving between these areas of functionality.