From my reading I am not sure if AES is a single, standardized algorithm that can work with different length keys, or a family of similar algorithms? What I mean is if I fin
The following is from the AesCryptoServiceProvider MSDN page.
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role not supported), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
The thing is though, I don't really see a reason as to why it wouldn't be supported. .NET 3.5 is commonly installed on Windows XP now, but there may be something about the CLR before XP SP3 that may be different and prevent this from working properly. There's really not enough information on the MSDN page to speculate even; though.
As for your question, the differences (again from MSDN) between the classes are as follows:
AesManaged
Provides a managed implementation of the Advanced Encryption Standard (AES) symmetric algorithm.
The AES algorithm is essentially the Rijndael symmetric algorithm with a fixed block size and iteration count. This class functions the same way as the RijndaelManaged class but limits blocks to 128 bits and does not allow feedback modes.
AesCryptoServiceProvider
Performs symmetric encryption and decryption using the Cryptographic Application Programming Interfaces (CAPI) implementation of the Advanced Encryption Standard (AES) algorithm.
Aes
Represents the abstract base class from which all implementations of the Advanced Encryption Standard (AES) must inherit.
I have always stuck with the *CryptoServiceProvider implementations as they have always provided me with what I desire. The only thing I suggest is if you want to see if the different classes perform differently is to write some test cases and unit tests, and actually see it in action.