Rigging Clothes To A Character
A data transfer of vertex groups, all on its own, will do nothing to deform a mesh.  For good or ill.

Please forgive me if I'm telling you something you already know, but it's necessary to parent the shirt to the armature after applying the data transfer.  (With the armature modifier.  Use ctrl-p armature deform.)

If the shirt has any other deforming modifiers limited by vertex groups, data transfers can affect those as well.

It's common for armatures to have slightly different positions in pose as opposed to resting, even without any explicit pose, just from constraints.  Remember that your data transfer modifier will transfer from its target's final, modified position.  It's very easy to data transfer from a model that is slightly deformed from its own armature modifier, and this is not usually what you want.  Consider carefully your target before applying the data transfer, consider which modifiers you want visible for purposes of the data transfer.  You can always disable them temporarily, then re-enable them after the modifier.

You usually want an applied data transfer for this purpose, unless you have an unparented copy of the model somewhere, because you don't want to transfer from a posed character, you want to transfer from an unposed character and only then pose both the character and the clothes.

Finally, even though you didn't ask, unless your shirt mirrors the topology of the data transfer target, you probably don't want to transfer from nearest vertex.  Transferring from nearest face interpolated is likely to give better results.

Edit: I'll try to answer your questions.

When you select a mesh, then select an armature, then hit ctrl-P and use one of the armature deform techniques, it does at least two things: it parents your mesh to your armature, with a child/parent relationship exactly the same as if you parent a mesh to an empty; and it creates an armature modifier.  Parenting alone is not-quite necessary for armatures to work, but the armature modifier is essential.  So when I wrote, 


  (With the armature modifier. Use ctrl-p armature deform.)


I was clarifying that parenting alone was not sufficient to get deformation from an armature; the armature modifier has to exist as well.


  Also I'm not supposed to do ctrl-p armature deform with empty groups? Everywhere else I've ever seen people do it they use empty groups.


I'm afraid I don't understand this question.  When you use ctrl-p to parent an armature to a mesh, you get a few armature specific options.

If you choose only "Armature deform," the action will not change any vertex groups on the model.  Any deforming bones that happen to have the same name as existing vertex groups will function fine, because you already have vertex groups created for them.  I consider this the correct way to parent a mesh that is already weighted.

If you choose "armature deform with empty weights", it will create vertex groups for any deforming bones in the armature that do not already exist.  No vertices will be assigned to any of these groups, but any already assigned will remain assigned.  If a vertex group already exists, it won't be changed.  Using this to parent an already weighted mesh to an armature is fine.  But its more typical use is simply to prepare an unweighted model for manual weighting.

If you choose "armature deform with automatic weights" or "envelope weights", it will create any vertex groups it needs (deforming bones) and it will write values into those groups.  If those groups already exist, any values in them will be overwritten.  So you shouldn't use this method to parent a model that already has weights that you want to keep-- like weights from a data transfer.


  defaulted they come in T-Pose mode. Would this be considered a pose even though its defaulted like that?


If the model with only an armature modifier is in any way different from its edit mode position, it is posed.  If it is not, it is not posed.  As I said, sometimes posing is subtle, and sometimes it is generated by constraints on an armature rather than due to any manual animation.  The safest thing to do is to disable any armature modifiers on the target of a data transfer modifier before applying that data transfer, and then re-enabling it afterwards.  An alternative would be to select your armature, and in the armature tab of the properties view, set the armature to rest position.