To me, chord substitution and altered harmony is one of the most complex and interesting things about music. You can get an awful lot of mileage out of simply taking the four basic triad types and using them with different (voiced or implied) roots to get subs, as Mike says, but he's right - there's a lot more.
Just googling chord substitution book pdf yielded a lot of free stuff out there, including this useful page -
http://howardblackmusic.com/chordsubst.htm - which mostly gives links to some interesting tutorials, including this one by Michael Furstner -
http://www.jazclass.aust.com/lessons/jt/jt19.htm - which I find the most useful basic overall explanation of how to proceed finding and using subs I've seen in a while, especially integrating the idea of chord plurality that Guy mentioned. Then when you look up chord plurality, there are a few pages that lay out a lot of the more important equivalences and their usage, e.g., like
http://jazzguitarlegend.com/plurality/
The other related idea is that of chord homonyms, which leads to many other useful links. Most books I see on chord substitutions focus on
usage of a fairly small number of equivalent chords and close-enough subs, which is of course important, but I'd like to see more elucidation of chord plurality and homonyms.
Other books which I found useful on this subject, mostly for guitar, are
"Chords and Progressions for Jazz & Popular Guitar" by Arnie Berle
"Guitar Fingerboard Harmony" by Ed McGuire
and of course the Ted Greene books "Chord Chemistry" but especially "Modern Chord Progressions - Jazz and Classical Voicings for Guitar". There are comparable books for piano, and perhaps they are even more comprehensive, since let's face it, piano permits the most comprehensive harmonization of any instrument I can think of.
But in the end, to really start to get at the heart of this kind of stuff, I just had to sit down with a pencil and paper and work out correspondences mathematically, and then try them on a guitar or piano. 10+ years ago, I even wrote a C program to spit out piles of equivalent or near-equivalent chords, but it got lost in the ozone somewhere, I've been meaning to rewrite it. Yeah, when I get a bunch of free time - right.
The first part, for me, is just finding the equivalences that sound right in various situations, and for me it's much, much easier on guitar or piano. Then figuring out what works on steel or slide guitar is yet another and more complex problem, for me at least.
I'm sure everyone has a different approach, there's a virtually infinite supply of permutations and combinations possible, and it isn't so simple sorting out what sounds good from what doesn't - and that is heavily situational. For me, from a practical point of view in ensemble playing, simpler is usually better because I have less chance of clashing with what someone else is doing. So in practice, I generally try to build the minimal structure on top of what Furstner calls the 'essential chord tones', 3 and 7, to get the basic chord quality I want. To be blunt, I'm much better on this on guitar than steel, or probably more accurately, I'm much worse on this on steel than I am on guitar. I think it's quite a bit harder on steel than guitar, and quite a bit harder on guitar than piano.