It would be difficult to find any situation where you program a computer and not develop some kind of software in the process. Simply pressing buttons on a system is not programming, it's operating. Programming a computer involves creating some kind of program, and that, by definition, is software. In other words, the difference between "programmer" and "software developer" is purely connotation: one might get you a higher salary or more attention at parties than the other, but they denote the same thing.
Not every programmer is a good programmer. Knowing data structures, algorithms etc. makes you a better programmer; there is, of course, a point of diminishing returns, but I think it's safe to say that the average industry programmer knows too little rather than too much about them. (It's all too easy to land a relatively high-paying job simply by calling yourself programmer and winging it with no professional education.)
No, you don't have to know every programming language; that would be virtually impossible. For perspective: I have a PhD in computing, and I know about twenty languages well enough that I would feel comfortable writing programs in them without further education, and that is a tiny, tiny percentage of the ones that exist. Knowing different kinds of languages broadens your mind and is a sign of a well-developed programmer, but measuring someone by how long their resume check list is is almost completely useless.
Your last question is unanswerable in forum post format, and probably in general. A good programmer is one who speedily, reliably and repeatably fulfills the requirements handed to them. What method, habits or tools are most conducive for that is disputed and probably rather personality-dependent. You'd need to ask more and more specific questions to get answers here.