Data2SD is a script that allows the active data being used by applications to reside on the SD card vs internal memory. Basically it's redirects requests to directories to the same directory on the card. It will allow you to have more active applications and not fill up the phone's RAM or internal storage NAND with data. There are multiple versions of this script with different things being moved to the card. The problem here is that multiple active programs may try to write to the same directory at the same time on the SD card, and the SD cards can be slow to write data.
App2SD is a kernel call that allows the application to be actually stored on the SD card. So large unimportant programs like Angry Birds can take up space there where there are better limits. I give Angry Birds as an example because it is so large, and many people have multiple versions. The problem with App2SD is that the card has to be in the phone, and for most people this works but for those of us who change SD cards (I do) for various reasons, you have to duplicate the apps on each and in the case of games constantly sync them so you don't lose game-played information or do without the app when you have a different card in the phone.
While there have been great improvements to SD cards, they are not as robust as a SSD, and constantly writing to the cards may reduce their life. Additionally, off brand cards may write very slowly compared to reading data giving the phone more lag. Also securely wiping a SD card at this time may be problematic.