The "c" (or "k") form is from Norman French; the "ch" form is from standard French.
- blanket (c1300), blanch (1388)
- car (c1320), chariot (c1374)
- castle (complicated, see OED entry), château (c1739) - see also under loss of "s"
- catch (c1225), chase (c1300)
- cattle (c1275), chattel (a1240)
- pocket (!350), pouch (c1250)
The "w" form is from Norman French; the "g" form is from standard French. These words were originally borrowed in French from Germanic (the "w" is a giveaway). In Norman French, the "w" remained unchanged, but in the dialects ancestral to standard French, the "w" changed to "gw" and then to "g". (https://en.wikipedia.org/wiki/History_of_French#Effect_of_substrate_and_superstrate_languages)
- reward (a1325), regard (1348)
- wallop (a1375), gallop (c1515)
- warden (?c1225), guardian (1417)
- wardrobe (a1325), garderobe (?c1450)
- warranty (1338), guarantee (1679)
The "s" form is from early Old French (including Norman French); the form without "s" is from later French, where "s" between a preceding vowel and a following consonant first weakened to "h" (as in many other varieties of Romance) and was then lost entirely. This weakening and loss occurred in Late Old French (approx. 1250-1300) (https://en.wikipedia.org/wiki/Phonological_history_of_French#Table_of_vowel_outcomes). Standard French orthography preserves the memory of the "s" with a circumflex accent over the vowel. In English, the accent is usually omitted nowadays, but I've kept it here for clarity.
- castle (complicated, see OED entry), château (c1739) - see also above under "c" vs. "ch"
- feast (1200), fête (1754)
- hostel (c1250), hôtel (1677)
- paste (1288-9), pâté (1704)
- convoy (Norman, c1405), convey (French, a1375)