A lot of them are Microsoft's, but also a lot of them are put there by other software.
A DLL is
basically a compiled library of subroutines, and usually the functions contained in them are refered to as WinAPI. There are a lot of them (probably too many :\) because they are for the most part specialized, although somewhat repetitive and can be space wasters. (they can also be used for icon libraries and other similar things, since they they can hold resources, not that PE/NE Win32/Win16 EXEs can't)
IE (Taken From XP Pro Install):
SHELL32.DLL.......Common Shell API
COMDLG32.DLL......"Common Dialog (save, load, color selection, font selection, printer dialogs, etc)"
GDI32.DLL.........Graphics\Device Interaction
KERNEL32.DLL......OS Core\Base
USER32.DLL........Controls\Messaging\Interface
ADVAPI32.DLL......Registry I\O
UXTHEME.DLL.......XP Skinning
SHDOCVW.DLL.......Shell Document\Control
SHLWAPI.DLL.......Shell Light-Weight Utility Library
MSVCRT.DLL........Bunch of stuff for MSVC++ Runtime
NTDLL.DLL.........NT Layer (Used by Kernel32, see portable executable imports table)
BROWSEUI.DLL......Shell Browser UI
WSOCK32.DLL.......Windows Socket API
MSVBVM60.DLL......Visual Basic 6.0 Runtime
OLEAUT32.DLL......OLE 3.5 For NT/95 Automation
OLE32.DLL.........Microsoft OLE For Windows
OLEDLG.DLL........OLE 2.0 User Interface Support
MORICONS.DLL......WinNT\95 Setup Icon Resources Library (Where the QBASIC icon, and other old ms-dos icons live
)
etc..
Edit: Various grammer fixes. Original post didn't make much sense, sorry.
[ December 09, 2003: Message edited by: anphanax ]