This numbering system is a fairly well-known peculiarity of Indian English, but isn’t actually much of a mystery; the answer to this question is pretty straightforward. Oxford Languages gives the origin of the word ‘lakh’ as simply:
via Hindi from Sanskrit lakṣa
In other words, the word wasn’t anglicized from Sanskrit lakṣa, but from the Hindi lākh.
The /ʃ/ sound (sh) was lost somewhere in the Sanskrit ⇾ Hindi conversion. This is similar to how Hindi rakhna (राखनं) is different from the Sanskrit word it comes from, rakshati (रक्षति). The loss of the final /a/ sound is natural, as with akṣara becoming akṣar in Hindi.
There's more information about this shift here, as @Au101 notes in a comment. The relevant quote is that "A sibilant assimilates to a preceding k as an aspirate (i.e., the sequence kṣ becomes kkh)."
As you mentioned, the original Sanskrit word lakṣa (laksha, लक्ष) has been adopted into many different Indian languages. Wikipedia has a list of how the word appears in several languages:
- In Assamese: লক্ষ lokhyo, or লাখ lakh
- In Bengali: natively (tadbhava) known as লাখ lākh, though some use the ardha-tatsama লক্ষ lokkho
- In Hindi: लाख lākh
- In Dhivehi: ލައްކަ la'kha
- In Gujarati: લાખ lākh
- In Kannada: ಲಕ್ಷ lakṣha
- In Kashmiri: لَچھ lachh
- In Khasi: lak
- In Malayalam: ലക്ഷം laksham
- In Marathi: लाख / lākh/laksha
- In Meitei: ꯂꯥꯛ lāk
- In Nepali: लाख lākh
- In Odia: ଲକ୍ଷ lôkhyô
- In Punjabi: (Shahmukhi: لکھ, Gurmukhi: ਲੱਖ) lakkh
- In Sinhala: ලක්ෂ lakṣa
- In Tamil: இலட்சம் latcham
- In Telugu: లక్ష lakṣha
- In Urdu: لاکھ lākh
In these, you’ll notice that the languages that preserved the -sh- sound in the middle of the word are all from the Southern parts of India (Kannada, Marathi*, Malayalam, Sinhala*, Tamil, Telugu). Kashmiri’s لَچھ is a bit of an outlier, as it pronounces it with a ‘ch’ sound. (I can’t explain it.) Notice how the /k/ sound also becomes aspirated as we move up the map.
When the British first began to try to write down and understand Indian languages, they would have been interacting with Northerners, such as speakers of Hindi or Punjabi. Naturally, this is the spelling they would have recorded.
(The rest of this answer is just a whole lot of fluff that came from my venturing down this rabbit hole. No need to read past this.)
In early texts, there were some alternative spellings for lakṣa, as an entry for from A Comparative Dictionary of the Indo-Aryan Languages notes:
lakṣá: 1] stake, prize 2] mark, sign 3] 100,000 [As numeral, see Add.]
Addenda: lakṣá: lákkh ʻ100,000ʼ, lākha, lakha, lakka
(The original entry was confusing, I've edited the formatting a bit)
Other spellings I’ve found include, from John Shakespear’s 1845 An introduction to the Hindustani Language, lāk’h; and from John Borthwick Gilchrist’s 1796 A_Grammar_of_the_Hindoostanee_Language, lak,h. There are also two spellings in this quote from The popular Encyclopedia (1817):
LAC, or Lak, from the Sanskrit lakshâ or laksha, that is, 100,000. In the East Indies it is applied to the computation of money. Thus, a lac of rupees is 100,000.
A few other spellings here, from The Concise Dictionary of English Etymology:
Lac (2), a hundred thousand. (Hind.- Skt.) A lac of rupees = 100,000 rupees. Hindustani lak (also la̍kh), a lac. - Skt. laksha, a hundred thousand
And there’s this somewhat bizarre definition from A Concise Etymological Dictionary of the Dhivehi Language:
LAKKA [?]: n. & adj. Hundred thousand; many, numberless, incalculable, myriad, several. infinite. innumeralble. [sic] Sin. laksha: lac (100,000). Ar. lakk. Alāk. lukūk: lac.
Sk. laksha: a lac, one hundred thousand. P. lakkha: a high number; a lac or 100,000. (Cf. laksha).
LAKSH’A [?]: n. & adj. (arch) Hundred thousand; many, numberless, incalculable, myriad, several, infinite, innumerable. Sin. laksha: lac, 100,000
(Dhivehi is spoken in the Maldives, but this does suggest that there were a few other spellings floating around at the time)
Of these, the most competitive spelling was lac, as this excerpt from the East India Company's 1813 Charter Act (section 43) shows:
a sum of not less than one lac of rupees in each year shall be set apart and applied to the revival and improvement...
But the other spellings have died out; today lakh is the only accepted one.
There is more to see; for one, consider this quote from the 1812 A_Grammar_of_the_Malayan_Language:
laksa: one hundred thousand...In borrowing the word laksa from the Sanskrit, the Malays have, very arbitrarily, changed its signification from an hundred thousand to ten thousand ; which often gives rise to misunderstandings in their transactions with merchants from the continent of India.
There are three implications here- the first is that laksa has a different meaning in Malay, the second is that ‘signfication’ [?] is a word, and most importantly, that Indian merchants did hear and understand the word ‘laksa’ in the context of 100,000, even if their own native languages had changed the spelling and pronunciation.
Finally: this excerpt from 1764 Ames Library Pamphlet, in French, uses the ‘lakh’ spelling- this implies that ‘lakh’ was already the established orthographic precedent. And, ‘lakh’ was chosen over another alternative spelling, lac, which would have been more naturally French. Note that other Indian words, like ‘roupies’ (rupees) were gallicized.
[?] ready money » a contribué pour un lakh de roupies à la construction des nouveau bâtiments de cette université. La meme philanthrope a offert un prix de cinq mille roupies au parsi qui se distinguera comme avocat plaidant (barrister) a la haute cour de Bombay.
As for the name of Lakshadweep, Byju's has this to say:
This set of small islands was earlier known as Laccadive, Minicoy and Amindive islands. In 1973, it got changed to a collective name, Lakshadweep.
Likely, the Parliament in India decided to keep with the original Sanskrit root. I suspect that this is because it’s a Southern state, but I’m really not sure.
The font here can't completely support 'a̍' and 'ṣ,' so sorry that it looks a little strange