Your question has been unanswered for so long so I will give you my opinion. For your information, I have formal qualifications in Computer Science, Computer Engineering and now completing my Masters of Science in Nanotechnology. My last pay at my job before coming back to university was $44/hr with strong potential for increase.
1. You do not need a degree to be successful in CS but this depends on what you want to do. Do you want to develop software, consulting, etc? But if you want to be at the core of software engineering, you would need a degree in CS. This is because you get to learn and understand the core knowledge for computers to advanced levels. So basically, I am distinguishing between reading a C++ or Java textbook and being able to write some code. A degree in CS gives you insight you could never get by reading programming textbooks.
2. Your second question is not complete.