Hi and Welcome, Adrian.
While the QL has the capacity and tools to handle most or all the old (last millennium) languages, you cant really use it to build modern apps. No Ruby, Python or even Java. However, the older languages and the craft of using them is deeply embedded in the archeology of the modern paradigms, so a good understanding of programing the QL might be useful in gaining a better understanding of (modern) programing in general?
IMHO, the QL is best at two things: BASIC and Assembler, both, as it were, built in. Assembler gets you to the heart of its beautiful and relatively simple and compact OS, giving you god-like powers over the whole machine. The simplest way to use assembler on the QL, and perhaps the best place to start, is to build collections of machine code extensions, known as toolkits, for the high-level SuperBASIC shell.
A number of books and manuals have already been mentioned on this thread. Add to that the "QDOS SMS Reference Manual", which is the most comprehensive tome on QDOS/SMSQ/E available. Dilwyn has it. The supreme teaching guide to good QL programming and good coding in general, must be the SMSQ/E source code itself! Get it from W Lenerz at
http://www.wlenerz.com/smsqe/
These two works may appear harsh and terse at first; no colourful examples or pretty pictures to guide you (the nearest youll get to that is Norman's excellent ebook tutorial) but they are (on the whole) almost autistically clear and logical. The degree of access and control, as well as the potential to fix and improve are some of the benefits of persevering. The pain/benefit balance may not suit all, but then, as you know, almost anything worth doing is difficult in the beginning..
All the best,
Per