In IT outsourcing, you contract a professional third-party outsourcing vendor who has a talent pool of professionals in various technologies and different seniority levels. Once the vendor has your staff requirements, they pick out the necessary professionals for your project. It means that while the people work on your project, they still work for the vendor.
IT outsourcing is a good fit when you need to hire an entire software development team including project managers and business analysts.
IT outstaffing looks very similar to outsourcing at first: you contract a third-party vendor who has a pool of IT professionals. De-jure, the outstaffer is their employer but de-facto, these professionals are now a part of your team. Think of an outstaffing vendor as the party that takes care of the office and the taxes while you have most of the control over the IT professionals who work for you. Outstaffing is great if you only need software developers and testers since your in-house employees usually do all the management. However, you can still hire PMs or BAs from the outstaffing vendor.