Pre-compiled versions are distributed from ftp.gnu.org and its mirrors1. Emacs binaries are distributed as zip files, digitally signed by the developer who built them. Generally most users will want the file emacs-23.3-bin-i386.zip, which contains everything you need to get started. The file emacs-23.3-barebin-i386.zip is provided for users who already have the source, but had second thoughts about compiling it themselves.
The latest source is always available from ftp.gnu.org and its mirrors. It is distributed as a gzipped tar file, digitally signed by the maintainer who made the release. For minor releases, xdeltas for patching the previous release are also available.
Yes you can. See the instructions on Savannah, the GNU development site, for details.
To compile Emacs on Windows, you will need the MingW or Cygwin port of GCC with MingW make, or a Microsoft C compiler with nmake and the single threaded C runtime library. Recent versions of Microsoft Visual Studio no longer come with the single threaded C runtime library, which is required for certain POSIX compatibility, so MingW is usually the best choice. Image support requires external libraries, the headers and import libraries for which will need to be installed where your compiler can find them. You will also need ports of GNU rm and cp, as the Windows native equivalents are not consistent between versions. GNU texinfo will be required to build the manuals. See Other useful ports.
After unpacking the source, or checking out of CVS, be sure to read the instructions in nt/README and nt/INSTALL.
By default, Emacs is compiled with debugging on, and optimizations enabled. The optimizations may interfere with some types of debugging; the debugger may not show clearly where it is, or may not be able to inspect certain variables. If this is the case, reconfigure with --no-opt.
The file etc/DEBUG contains general debugging hints, as well as specific notes about debugging Emacs with both gdb and Microsoft debuggers.
GDB is the GNU debugger, which can be used to debug Emacs when it has been compiled with GCC. The best results will be obtained if you start gdb from the src directory as ‘gdb oo/i386/emacs.exe’. This will load the init file .gdbinit in that directory, to define some extra commands for working with lisp while debugging, and set up breakpoints to catch abnormal aborts.
MS DevStudio can be used to debug Emacs when it has been compiled with
a Microsoft compiler. To view lisp variables, you can call the
debug_print from the Quickwatch window. Some
old tips are probably still valid.