Here we are trying to label a single input element with two different labels. This scenareo happens frequently in surveys where a form may have several questions each of which may have several answers from which to choose. When tabbing through a form such as this using a screen reader, typically only the answers will be read as you tab. This means that to complete the form, one needs to find and read the text of a question, then find the first answer in that question's answer group, go into forms mode, complete the answer, switch back out of forms mode, and find the next question and repeat. Using the technique shown here we can simply tab through the form and hear each question as it comes up.
*** One important thing to note here is the tradeoff between brevity and usability. As one tabs through the form, the goal is to be able to get enough context to complete the form with as little extraneous navigation as possible. If the questions are long (consider a multiple choice question such as one might find on a test), the question text as well as any or all of the individual answers may indeed be long, in which case it makes little sense to be forced to listen to the question before the current answer while tabbing through the form. This will inevitably lead to user fatigue and ultimately to user error.
It is also noted that styling forms, while still tricky, can give satisfactory results in modern browsers, especially for standard form widgets such as buttons, text fields, radio buttons, and checkboxes. For more complex widgets, there are available javascript solutions which can do a good job. If your site depends on javascript in order to function normally, then these libraries may fit in nicesly. You can find much more information in Advanced styling for HTML forms