2. Learn what to build. Once you get really good, your time starts to be more valuable than gold. There will be very few people in the world who are as good (the internet will bias you to think that the world is full of great people - this ain't so, there isn't enough of 'em). You owe it to people and to yourself not to bother with improving something by 1% or 10% because you're wasting time in opportunity cost and could be improving something by 1000%. Make sure what you're building is worth building, and make sure every line of code you write is worth writing, otherwise you will fail. Break the NIH syndrome in yourselves now (all good people have it, phenomenal people that build successful companies broke it in themselves). Learn to infer what people want.
3. If you're that good, you will easily get a $100k job after graduation (probably more by then), and grow to $180k in a few years. That's very, very comfortable. It's not worth busting your ass 16 hours a day to build another CRM tool when you can have a $180k job. So don't start a business to start a business. Start a business to bring a meaningful change in the world. A huge change. A 1000% change. There are lots of hugely successful companies out there that do what's not meaningful to you - ignore them. But do make sure that what's meaningful to you is also meaningful to millions (hopefully billions) of others. You won't get rich writing Lisp compilers.
This is what matters. Most everything else is fluff.
There. One down, four to go :)
I agree with advice 1 ("Be good. Be very good."). But do you really believe you have to be -that- good to start an online business?
Also, I believe breadth of knowledge is also good (not only depth) - I've studied and worked in networking and most of the parts of the software platform, so when something fails I have a decent idea of where to start looking (I guess you cover that base with "Don't be the "front-end guy" or the "back-end guy"").
And you very likely won't get that knowledge from college - you have to learn it in the "real world" I agree with the other advice here about working in a challenging environment like another startup.
Also, point 2 - "the internet will bias you to think that the world is full of great people - this ain't so", I suspect that it's true as well.
Which brings me to point 3 - I'd do what's more comfortable for you and the way you want to live your life.
What I don't entirely agree is with not being worthwhile to start your own business unless your change is that dramatic.
I believe that wanting to be your own boss is a good enough reason (bringing a 1000% change TO YOU) - see the guy who quit Goldman Sachs for example: http://news.ycombinator.com/item?id=1690001 .
Or doing something that eases a pain point to 10 users (say, bingo cards for teachers :) ).
Not everyone has to change the entire world :) (though it's good to try!)
Just my opinion, 4 years after college (and 8 years of corporate jobs).
If you don't know what you are going to do and you just start because you want to start. Chances are more that you will fail.
Some people give an excuse, failure is necessary for success. Total BS. Crap.
Those people misinterpret the saying.
If you want to start a business of Restaurant, you should know what is the job of a Dish Washer.
You should be good at what your business is going to be.
A big part of creating a high-quality product is about good presentation & interaction - even if you have a designer in your future team it helps to speak their language.
Previous HN threads on design:
I know it might be heretical to say this on HN, but establishing and growing the kind of organization that can create this kind of change in the world will require a lot more than just technical and/or academic chops. Ultimately, what you'll need to make a difference in the world is a lot more intangible than that: vision, leadership, ambition, tenacity, etc. My advice would be to focus on society and find a way to "hack" it in a novel way that is mutually beneficial to both your organization and to society as a whole--this is how you can really make a huge change in the world.
Fundamental algorithms can't be expressed sanely in anything other than C. How the heck do you implement a hash table in perl, for example?
Sure, higher-level languages provide some data structures; but they're not always going to have the internal tradeoffs required to make them a good fit for your problem space. A few weeks ago I had to rewrite malloc (well, technically I added a caching layer in front of it) in order to get a 4x speedup to my code -- you're never going to do that in a language which doesn't even admit that malloc exists.
To take an example of a web startup (just because the are the most common), here are some question that require understanding the basics of operating systems:
1) "why is my database cache constantly being swapped out to disk when there's enough memory in my machine"
2) "why are the pages taking so slow to load, even though I'm only serving a few hundred hits a second"
3) "what is my webapp doing that's making python/ruby take up 100% of the cpu" (to find this out, you'd likely be using gdb, ltrace and strace which very explicitly require at least a passing familiarity with C and POSIX)
4) "why is there a process showing up in ps/top that I can't kill even with kill -9"
Finally, you certainly have to be a good programmer to start a startup: not the best one, not a "10x programmer", but a good one (irrespective of what sort of applications you write). You can't be a good one without understanding how your programs work.
 That said, I had my hands dirty in Linux source code when debugging an issue while working in (of all places) an email security company.
Or perhaps it's to teach you how poorly some languages express algorithms.