Good question. They both have the meaning "to sit", but
掛ける / 腰掛ける can only be used to express sitting down on things like chairs, sofas, benches, etc. - basically any kind of surface elevated above the ground/floor.
座る is more general, and can be used to express sitting directly on the ground/floor (in addition to the things listed above).
Note: Originally 座る was used exclusively for sitting on the ground/floor and nothing else, but in modern Japanese, it's becoming more common to see 座る used for seats and chairs, etc. as well. An example of this would be 「電車の椅子に座る」 and 「電車の椅子に腰掛ける」, both which are perfectly fine to say, and mean the same thing: "to take a seat on a train"