First off, if you're new to the VMware and vSphere SDK/APIs, please spend some time going over: Getting Started with vSphere SDKs - Updated for SDK 4.1 release. This will help you understand the various components and how to get started selecting one of the language bindings to the vSphere API.
Also you'll want to familiarize yourself with the vSphere API reference documentation: http://www.vmware.com/support/developer/vc-sdk/visdk400pubs/ReferenceGuide/index.html
1) and 2) are redundant, you can just go to your vCenter to collect all managed ESX(i) host and traverse through each host extracting the properties you required .... unless you have ESX(i) hosts that are not being managed by vCenter.
Here's an example using vSphere SDK for Perl on listing VMs from either ESX(i) or vCenter system:
Here's a script that shows how you can extract the various properties from your vCenter, ESX(i) hosts, VMs,etc.:
VMware vSphere Health Check Report v5.1.0 (this might be complicated if you're new to the API, so I suggest you start small and understand the basics)
For a VM information, you'll want to take a look at: http://www.vmware.com/support/developer/vc-sdk/visdk400pubs/ReferenceGuide/vim.VirtualMachine.html
3) For host information, you'll want to take a look at: http://www.vmware.com/support/developer/vc-sdk/visdk400pubs/ReferenceGuide/vim.HostSystem.html
4) For performance/hardware gathering take a look at:
Lot of information, take some time to throughly go through it and try some of the sample code/scripts provided by each of the languages bindings to the vSphere API. There are also lots of webinars and videos at: http://communities.vmware.com/community/developer/learn which can be leveraged.
good luck and happy scripting/programming
VMware vExpert 2009
VMware ESX/ESXi scripts and resources at: http://engineering.ucsb.edu/~duonglt/vmware/
If you find this information useful, please award points for "correct" or "helpful".