What is the best workflow for texture painting?
It really depends on a lot of things, what you're texturing, how much more work you have to do on it, etc, but the workflow I generally find useful is as follows:


Finish all the modeling
Unwrap the mesh
Use the texture painting features in Blender to paint really basic colors onto the model (this gives you a "map" of sorts, which makes the next step easier)
Export the UVs as an image that you can overlay on the basic diffuse map you just made
Export that basic diffuse map to an image that you can paint on in GIMP or PS.
In GIMP or PS, adjust the UV layout image such that you can lay it over your diffuse map so that you have a more precise understanding of what goes where.
Paint on the diffuse layer, but under the layer with the UV layout on it.
Use that diffuse map to generate bump and spec maps. Usually, I completely desaturate the diffuse map and adjust that until it makes sense as a bump map, and then do the same thing until it makes sense as a spec map, but it's really common that your diffuse map will not be useful that way, in which case:
Repeat steps 6 &amp; 7 to paint spec and bump maps.
Import those into Blender.
???
profit


Note: it's really easy to port images from BI to Cycles, if you understand how they work. The diffuse image will "noodle" into the color input of a diffuse shader, and the bump will "noodle" into the displacement input of the final material output node (though you might want to us some ramps and other stuff to fine-tune it).

The spec one will be the hardest to figure out, because you could do it a couple of different ways, and they will give different results.

You should always (except for specific situations) use a diffuse shader and a glossy shader. The spec map can either drive the COLOR of the spec shader (grayscale), or the GLOSSINESS of the glossy shader, or the FAC value of a mix shader that mixes between a glossy shader and your diffuse shader. Each of these will give different results, so you should experiment and see which looks better.

Bonus: A color image should never go in the color input of a glossy shader. Except for a few rare exceptions, like certain metals, the spec map will be totally grayscale. Even with metals, you probably won't use an image, you'll just set a single color.