Technically, if there were no shortage of IP's, every server would have an individual IP number and be a separate piece of hardware. Unfortunately, the workaround for that has been virtual servers that share IP numbers, and software to allow multiple hosts (servers) on a single computer. But in a technical way, you are talking about 6 different servers (or virtual servers). your base second level domains domain1.com and domain2.com are two different servers. Each subdomain (ns1, ns2, ns3, ns4) used as a nameserver, is technically a different server even if only virtual.
A nameserer (ie. ns1) can have multilple domains or subdomains in it's database, and different nameservers can have the same names in their nameserver database for mirroring or redundancy. Most hosts only supply 2 nameservers which are generally on different computers for redundancy. You can use third party nameservers for extra redundancy as well. granitecanyon is a free DNS server, and zoneedit.com also has both free and paid nameserver services. that could be used for your ns3 and ns4 third level nameserver domains.
Usually with a hosting account, you could only designate one domain as your nameserver with all domains using those nameservers. You might need to buy a second host account to be another nameserver. However, it would probably still be on the same two pieces of computer hardware, so there would be no redundancy or reason to do so. (Example their computer1 would be designated as ns1.domain1.com and ns1.domain2.com and the other physical computer2 would be ns2.domain1.com and ns2.domain2.com). Therefore if computer 1 went out, the first nameserver for both domains would be out since they use the same hardware. For redundancy, all nameservers should be on separate computer hardware. For even better redundancy, they should be in different physical locations served by different backbone providers.