Ah, yes, I understand.
So c:txtchange runs the function without the c:, it collects the information required to run the second function (in this case the new text and the name of the text item to change). It gets the second function to run with this line:
(txtchange texta ent1)
Where texta is the new text string and ent1 is the name of the text entity to change. You could combine the 2 functions if you wanted but I'll often make a core function without the c:, in this case to change a text, and I can link many other functions to run it. For example, I have another function that increments a number, the first function does all that calculation and then the updating uses the one above, another I have copies texts from one to another.. again a first function to get the text string to copy and then the above to update the new text. Saves copying the same thing many times and only needs 1 update if I change my way of thinking ever.
So to use the code without the 'c:' you can use this in your code:
(txtchange **New Text String** **Text Entity Definition**)
where the **Text Entity Definition** is what you might get from:
(setq TextEnt (car (entsel "\nSelect a text string: ")))
Note also that the codes above might appear to be a long way round, they are shortened versions that run a whole load of things - the whole LISP file is quite large and LISPs in it are linked, shortened here to answer the question asked