You need to have a basic understanding of the different Krylov subspace methods to be able to use them.  If you are using CG on a matrix that isn't SPD, then you are doing something very wrong.  Same goes for the other methods -- they all have their strengths, weaknesses and gotchas, and it's pretty important to know what they are if you are going to use them!  Preconditioning can greatly reduce the number of iterations you have to do once you have chosen a method, but it's not particularly helpful if you are using the wrong method.