1) have the small molecule already present in your PDB file. The coordinates won’t matter so long as you plan to correct/modify them later.
2) create a Residue object of your small molecule and attach (I don’t remember the function name, it’s probably append) it to the Pose that contains the protein.
The pose_from_pdb() function is a bit of a quick wrapper around the more general pose_from_file() function. The pose_from_file() function has a number of different signatures, but one of them is pose_from_file( ResidueTypeSet, filename ).
The other way to do it (and potentially the preferred way in this case) is to read the file into an existing Pose which contains the modified ResidueTypeSet — pose_from_file( pose, filename ). — (The reason why generate_nonstandard_residue_set() takes a pose is that it annotates that Pose’s ResidueTypeSet to contain the particular residues added. The modified residue type set is then attached to that pose.)