I'm not an expert on convolutional codes, so I won't pontificate. For learning I found the tutorial chapter by McEliece in Handbook of Coding Theory quite useful, but my taste is algebraic, so McEliece's choice of language fit me well. Hopefully a university library near you has it, because that link was not very useful. Another oft cited textbook is Johannesson and Zigangirov. It is probably more useful to an engineer, as it more extensive, and goes into performance analysis, details on the algorithmics and such.
Anyway, my understanding is that there are very few general families of good convolutional codes (in sharp contrast to block codes), so intelligent guessing and computer search has dominated.
You have undoubtedly mostly found tables of good codes. I'm fairly sure somebody has published something on search heuristics and such, so to come up with new and better designs you will need have something better. Alas, I can't point any such papers to you.
For high performance with long blocks you should use turbo codes or LDPC-codes anyway.
To that end Johannesson & Zigangirov is also useful, because in the end they describe soft-output Viterbi algorithm, which will come in handy. For similar ML-performance a pure convolutional code simply cannot cope. At least not without outrageous trellis complexity, which is kind of pointless, because both Turbo and LDPC-codes have reasonably good decoding complexity. Yet, there is a range of block lengths, where traditional convolutional codes work better. If memory serves, cellular people use a convolutional code for block lengths between 40 and 200 payload bits or something like that. Shorter than that - a well designed block code will have so much better Hamming distance. Longer than that - use turbo codes. Much longer than that - use LDPC codes. For an exposition to the theory of LDPC-code design I refer you to Richardson & Urbanke. The theory is somewhat beyond me, because it uses stochastic math instead of algebra.