The relatively easy part is configuring the XBee so that the GE ZigBee Smart Outlet can join. Once that is done you have the have to code all of the ZigBee protocol messages (ZDO/ZCL) to communicate with the outlet.
One point in your favor is that you're only concerned with interop to the single device so you can probably get away with a lot of assumptions (not performing ZDO discovery to determine what endpoint you are talking with, etc). Hard-code a lot of details rather than making a general purpose application.
If you haven't already, go to zigbee.org. There will be links to register and download the various specifications. There are three specifications that matter for you, the core ZigBee, ZCL (Zigbee Cluster Library, and HA (Home Automation). Each specification builds on the previous.
You're also going to want to invest in a ZigBee sniffer for your own sanity. You might look into something like (https://www.ubilogix.com/ubiqua/). I'm not sure on their current licensing costs, probably more than you would like but might be worth to contact if they have special student licenses or could cut you a deal. They also have a trial.
As an alternate path you could use one of the Digi gateways like https://www.digi.com/products/models/x2e-z3c-w1-a. That doesn't come built-in with ZCL support but you can throw on the application from https://www.digi.com/support/productdetail?pid=5448 to get it. Handles all of the ZDO/ZCL communication and provides a high-level RPC interface that you can script on top of in Python.