I know there are a lot of actions that can be done with packages via the http API.
However, one function that I'd really like is to get the package status (i.e., whether it is installed or not installed). I don't see a way to do this with any of the documented API.
Is there a way?
lastUnpacked and lastUnpackedBy property determines if the package is installed. For all the packages status you can parse the output from  & decide based on presence of the property Unpacked.
Additionally to Sham's explanation -
1) If the 'lastUnpacked' Element has 'date and time' present then it means the package was installed at that particular time. The 'lastUnpackedBy' element displays the
user who installed the package.
2) However, if these two elements are empty, then it means that the package is in uploaded state and not yet unpacked or installed
a) If you want to check all the properties related to a particular package, the below curl command would be of help :
curl -u admin:admin -o output.txt http://localhost:4502/etc/packages/my_packages/name_of_package-1.0.zip/jcr:content/vlt:def inition.json
b) If you want to check a specific property of a package for e.g. property ‘lastUnpacked’ you can run the following curl command :
curl -u admin:admin -o output.txt http://localhost:4502/etc/packages/my_packages/name_of_package-1.0.zip/jcr:content/vlt:def inition/lastUnpacked.json