Depending on the complexity of your builds, you might need to install many different types of build tool on your build server. Remember that Jenkins is mostly used to trigger builds, not perform the builds themselves. That job is delegated to the build system used, such as Maven or Make.
In my experience, it's most convenient to have a Linux-based host OS. Most of the build systems are available in the distribution repositories, so it's very convenient to install them from there.
To keep your build server up to date, you can use the same deployment servers that you use to keep your application servers up to date.
Jenkins also has a method to deploy some builders, such as Maven, on the build slave. This is convenient when the builder you are using exists as a Jenkins plugin, but that's not always the case.