If قَوْم means 'people', what's the difference between الناس and قوم?
The main difference is in use. القوم is used to refer a specific group of people such قوم نوح وقوم عاد - his people, not any people, while الناس refers to any people, as in
إِن يَمْسَسْكُمْ قَرْحٌ فَقَدْ مَسَّ الْقَوْمَ قَرْحٌ مِّثْلُهُ ۚ وَتِلْكَ الْأَيَّامُ نُدَاوِلُهَا بَيْنَ النَّاسِ - آل عمران
Here القوم refers specifically to the enemy, while الناس is very generic and includes all and any people.
Having said that, they do in fact both mean people.
No difference between them or شعب either.
Actually, no. الشعب is something else.
الشعب is one of the divisions of people according to Arabs. A nation as a group of people is أمة, which is divided into several شعوب, which in turn are divided into several قبائل … and so on. For example, Arabs are أمّة, the “tribe” of خزيمة are شعب, the “tribe” of كنانة is قبيلة, the “tribe” of قريش is عمارة, the “tribe” of قصي is بطن … etc. قصي is a part of قريش, which is a part of كنانة, which is a part of خزيمة, which is a part of the Arabs.
The meaning of “people” used today is actually derived from this meaning, and is not used interchangeably with ناس or قوم. It generally refers to the population of a country that are most probably not all of the same قوم, and that may or may not be part of a larger group. It was coined to differentiate between الأمة العربية that links the populations of all Arab countries as a single nation, and الشعوب العربية that describes the populations of single Arab countries. The modern usage is actually a political one that is not the same as the English people.