From Hydrogenaudio Knowledgebase
This is the global file extension for the MPEG-4 container format including all kinds of multimedia content (video, natural and synthetic audio, 2D and 3D graphics, animated avatars, user interactivity etc.) that can be streamed over any kind of connection or network. The definition of this file format is handled separately in the Systems part of the MPEG-4 standard. You can obtain the full specifications of this and other parts of the standard from the ISO, either on a CD for a small fee or downloadable for free from their website and/or the FTP servers of the MPEG and MPEG Audio Subgroup.
Since MP4 is also based on the QuickTime file format (MOV), the resources available from Apple give a thorough insight into its internal structures (atoms etc.), too. Their developer documentations ("Inside QuickTime: QuickTime File Format" or "What's New in QuickTime 6") can be downloaded as PDF files from this site:
The additional file extensions *.m4a and *.m4p (as well as *.m4v) are used by Apple to differentiate between MP4 audio files created with iTunes4 (no Digital Rights Management) or downloaded from their new Music Service (copyright protected).
In the context of audio compression MP4 normally means "MPEG-4 AAC" audio files that do not differ in sound quality from "older" MPEG-2 AAC files, because the raw bitstream is exactly the same, only the file headers are different (i.e. if they have been encoded with the same codec and the same settings, e.g. with PsyTEL AACEnc or Nero's AAC plugin). But being a container format, a MP4 file can also contain a MPEG-2 AAC or even a MP3 bitstream, either alone or together with e.g. a MPEG-2 video bitstream. These different "Object Types" are always signaled in the header of a MP4 file, see e.g. the ADTS and ADIF headers of an AAC bitstream or take a look at a MP4 header with the -list option of mp4creator or mp4info (another MPEG4IP tool).
All MPEG-4 software players (Winamp and foobar2000 with their appropriate plugins, QuickTime 6, Windows Media Player with EnvivioTV or 3ivx DirectShow filter etc.) should play these MP4 audio files the same, because the AAC decoder part has been exactly defined by the MPEG since several years now.
Nevertheless this is only true for the Low Complexity / LC profile, so if you have encoded your AAC files (old or new) with another profile (Main, LTP, whatever), decoders that do not know these profiles like QuickTime 6 will refuse to play them. So it's not recommended to use these other profiles most of the time, because their effect is limited and the resulting problems (compatibility and others like higher usage of system resources) are just not worth it, at least not with audio content at normal bitrates (video files are another story).