1. It's been a while since I did pure software development, but it's the field that got me into IT. I enjoy the problem solving, the logic, and the literalness. Taking a large problem, breaking it down into the smallest possible parts, and then coming up with a solution is something that gives me a lot of satisfaction. So does taking a method that performs really poorly, making a small change, and increasing performance 10- or 100-fold.
2. The basics of programming translate across languages. If you have experience in C/C++ already, that's a good thing for you. I'd say C, some version of SQL, and something web-related (ASP.Net, Java which would translate well from C, etc...). That should cover your bases. Oh, also if you're looking to do backend stuff, it might do you good to get versed in a middle tier solution (IIS, Apache, WebSphere, whatever) and a BI and/or reporting solution (Cognos, SSIS, even Crystal Reports) just so you can get the basics. Non-language-specific technologies that you could learn about include relational databases, SOA, and object-oriented design.
3. Exactly what Lex said. Experience is a lot more valuable than a degree in this field, especially with so many things changing so rapidly. Speaking as someone who has hired quite a few folks, if someone comes into my office and can write some code, find their problems with it, and fix it, that's wayyyy more valuable than then having a PHD in CS. Personally, I have a MCP cert in addition to a B.S., but other than helping sort my resume into the "do a phone interview" pile, I don't think they've been as much of a benefit as walking in there and showing them what I can do. In other words, just go start making stuff
4. The problem is that software development is really easy to offshore. On my last dev team, I could get one developer in Jersey for the same price as two in Florida, or five to ten in Bangalore or Mérida. In order to get started in the US, you've got to have a connection with a decision-maker in IT, or be in the top 20% of your peers. There are a lot of other guys and girls looking to do what you want to do, and you need to stand out. The other way around that is to broaden your base and get in a small shop that's looking for someone who can do more than just sit in a dark corner and code. Having a double-E background might help with that - for example maybe you could find someplace that deals with PLCs, and where they need someone who can translate between the code monkeys and the guys who design the boards. Or maybe your prospective boss just dabbled in digital electronics before he got into programming (which is pretty common for folks 50+) and you can forge a bond. Once you get your foot in the door somewhere, look to gain experience in as many things as you can, even if they're not coding-related. (Program management, QA, DBA work, whatever) If they see you as the guy who can code
plus you can do some other stuff, that might be enough to make you stand out when it comes time for a promotion or a new job.
All just my 2 cents.
(Oh and 4b - Network, network, network. I used to work with a DBA who was also a Glader, although we didn't know it until I talked about EQ in passing one day. That professional relationship ended up with me hiring his friend who was a software developer, and that guy worked for me off and on for probably six years as well as being a guildmate in WoW. Anyway, the moral of the story is - if you want to connect on LinkedIn, send me a PM.
)