Sassenach is one of those fairly common cases where a word is borrowed from one language into another and even though its original sense remains unchanged, it acquires some extra meaning.
Originally, Sasunnach was a Gaelic word meaning 'a Saxon' and therefore 'an Englishman'. Later, it was also used to denote 'a non-Gaelic-speaking Lowlander' because Gaelic speakers wouldn't differentiate between speakers of English and Scots, which is quite interesting from the point of view of the ongoing debate whether Scots is a full-blown language or just a dialect. To this day, Gaelic has only one name for both: Beurla, which can be clarified as Beurla Shasannach 'English' or Beurla Ghallda 'Scots' (literally 'Lowland English').
In Modern Gaelic, the word Sasannach, to give you its present-day form, is used both as an adjective meaning 'English (-speaking)' and as a noun meaning 'an Englishman'. Gaelic has masculine and feminine gender so the noun Sasannach can only refer to a man but all you need to do is add the prefix bana and you get bana-Shasannach 'an Englishwoman'.
Since the eighteenth century, the word Sassenach has been also used in Scots. It was borrowed from Gaelic with its original meaning of 'English-speaking' and 'an Englishman or –woman' (Sassenach used for both because Scots has no category of gender). However, with time it acquired some rather pejorative connotations and could be used as a term of abuse. These days, it's lost most of its nastiness and although it can still be a slightly disparaging term for an English person, it's often used in a humorous way.
Finally, note that the ch at the end is pronounced as the voiceless velar fricative in both Gaelic and Scots. As this sound is foreign to their language, English speakers tend to pronounce it as the voiceless velar stop, and thus you get the variant Sassenak.