This one took me some time to figure out since I thought I was just doing something wrong.
I have Retina enabled, however I am using only one texture set. I do not have any
hd extensions, but all of our textures are higher res. This gives me the ability to use the same textures on all devices, and still keep it looking pretty on high res devices since cocos2d will just load what it sees as the low res version when it cannot find ahd extension. For the most part this has worked great, except when I started to try and use text the other day. When creating a label with CCLabelBMFont::labelWithString I get text that is made up of the wrong image data. After doing some digging, it appears that the data is being built from what it thinks is the -hd version of the texture, thus instead of building from a rect of size 1x1 its building it 2x2 and displaying 4 characters in a square per character block. However if I call setString with the same data I used in the original label creation the problem goes away. So I assume there is a bug in labelWithString, but the workaround is simple enough. Just FYI. Thanks!