A beautifully concise answer.
10+ years experience, in service, development, and a bunch of other generic IT roles. It can't be said anymore clear than above. To your questions, most will boil down to "well, it depends on the company". Some companies, even big IT ones don't allow working from home, other embrace it. Some companies let you set your own schedule within reason, but others have a strict policy on when you're allowed to work.
My last role had an insane amount of freedom. I came in when I wanted, took as long of a lunch as I wanted, and worked on what I wanted, they did not allow any working from home though. My current job is much more strict, but they allow a lot of working from home. No job is perfect I suppose.
The one important thing I think you should consider is stress. Development can be incredibly stressful depending on the amount of support you have, and the visibility of the project. Also, when deadlines approach, your hours can get crazy. I imagine this could happen in IT security too, but it's a part of the game in every development position I've ever had.
On the math subject, development is a big field, and a lot of things your average Joe would group under the "development" umbrella that might not really require a crazy amount of math, but honestly to do anything really "cool" with code, you're going to need math, and more than you think. There's a reason computer science and programming degrees have a high drop out rate.
Good luck in whatever you decide to tackle though. Either choice is a solid one IMO. Just do your homework and make sure you know what you're getting into.
There are a lot of roles with 'analyst' in the title that have a pretty wide scope of responsibility, and let you see a lot of new things.
+1 for finding an "Analyst" or "Help Desk Technician" role... it will get your foot in the door.
IT and Programming start off similarly unless you just finished a degree in CompSci/Engineering, have a ready-made portfolio, and land a job without any real-life experience.
Start low, learn as much as humanly possible, and then start slowly focusing more and more on what you enjoy.
I will add to the blonde's post that Development/Programming is IMO much more stressful than Network/Virtualization/SysAdmin.
The only time I have a deadline as IT Mgr/SysAdmin is when I start a big project (just finished up a new security system for the building) and the CFO or whomever is asking when it will be done and I give them a firm date (which I never do).
The only real stress in IT management comes when something breaks - and if you know what you're doing (and you've prepared) it won't be stressful.
Conversely as a developer, you may be pulling 14+ hour shifts cramming code and trying to make a game/app/project deadline.
IT / Tech in general is a vast field that is limited only by your willpower and imagination.
I tried to address that at the end of my post but people gotta nitpick I guess.
I’m not understanding why you are painting a dichotomy where IT is problem solving and software engineering is creativity. Software engineering is absolutely all about problem solving.
BOTH sides of Tech require problem-solving AND creativity.
My point was that IT / SysAdmin / Networking dips more into problem-solving and Development dips more into creativity.
There's obvious exceptions (scanning lines of code to find the issue in an app/program - problem solving) - (trying to map out the proper IT infrastructure for a company in a cost-effective, efficient, secure, and timely manner - creativity).