Aswell as the dpkg tricks mentioned by pjz, you may also want to look at etckeeper (tutorial ) - an app that puts your /etc/* under version control, making it easier to find any changes you've done and replicate them to other servers.
Also, for a shorter list than that produced by pjz's method, you can use
$ deborphan -a --no-show-section > /tmp/mypackagelist
This will give you a list of packages that will install all the other packages you require as dependencies. Can be useful if you actually want to look through the list. (dpkg --get-selections will produce a loooong list). In addition the list is short enough that you could add newlines and comment out entries with '#'. Then when installing the extra packages you can do
$ grep -v '#' /tmp/mypackagelist | xargs apt-get install -y
This way, if there are some packages you only want to install on some machines, you don't have to delete them from the package list altogether.