The list of "keywords" in Wolfram Language can only really refer to the list of all of the defined symbols, which you can get by evaluating ?*
.
I think this is a somewhat narrow view of the implementation of programming languages. Not all languages have keywords in the sense that C-type languages do, and it's also important to define exactly what you mean by "keywords". An example could be Lisp, which, like Mathematica, doesn't have any reserved words, but defined symbols which can be redefined, and in some cases forms that have special treatment within the interpreter - but the interpreter itself can be modified by the user as well. Other languages worth looking at are things like APL (and other Array Programming languages), Forth, TCL, Smalltalk.
Can it be called a language, if it doesn't have keywords? For instance, If I can Unprotect[Goto] then that can't be a keyword (or at least that is my understanding). Can someone (ever, sufficiently, convincingly) claim to have learned a language whose keywords are not defined?
I think this part of the question is out of scope for this site, but I've written the following now anyway, so:
Consider a normal spoken language like English. Words change meaning - for example, "awesome", which used to mean "terrifying" (Unprotect[Awesome]; Awesome := "terrifying"
). There are many, many people who have learned English who may not know what the word "affine" means, for instance, but if they needed to know what it meant, they might look it up in a dictionary. In my opinion, it is essentially the same thing with Wolfram Language - I know how most of the symbols I normally use work, and if I am learning about a new area, I will read the documentation about the symbols defined in that area.