If I assign software with a GPO, I assume that client machines will install this next time they reboot. However, I can't be certain without actually going to each of the clients and checking myself. Is there a way to check to see which clients have installed the software (like with WSUS) or a way to write a script to check versions of installed software on the clients?
GPO doesn't have any reporting mechanism built in. Any decent configuration management software could report what's installed, or you could script it.
Warning The following code, recommended by Microsoft, has serious issues. See the comment below this answer with a link to the "Rapid Publishing" (ie Emergency) Knowledge Base article from 2009.
If you're using reasonably new computers (Vista/2008+) you can use PowerShell:
This can be further scripted to product a list of computers with various versions of specific software installed, export to CVS or other ODBC connection or a variety of tasks... depending on what you're looking for. The process is a bit pokey, so you probably want to look into running this "-AsJob" to run multiple queries in parallel.
The question is too generic, so I can give you pointers at most. Think about how you would confirm the installation. Would, for example, existence of a file in %programfiles%\Company\SoftwareXYZ\abc.exe tell you that app installed successfully?
Once you figure that out, you will need to write a script to check for it.
You then need to report the result somewhere. You could for example post COMPUTERNAME as a file in a network share. For example following line in a batch file would do that:
Finally, you can add that script as a Startup script in the same GPO.