How do I create an entity using the properties of another entity?
Does this sound like a reasonable approach?


You've put some thought into this, it doesn't sound unreasonable -- nor does it sound simple.


  Is there a better way to think about this/do this?


If your reading Questions are simply textareas great, if they're radio boxes and select widgets look into leveraging an existing "quiz" or form builder like: webform, webform_entity or the quiz module.


  If it is reasonable, is there a way to pass a reading entity to the Assignment Entity so that I can properly construct an assignment from the reading data?


I have cloned nodes before in Drupal 6/7, which isn't too hard. I think you need to really iron out a workflow for "if I make a reading -- I can create Assignment(s) and/or AssignmentQA entities". You could try creating this workflow logic for instructors using workflow, maestro or using a set of Rules.

If you try and just "I made a reading entity". You could always make a view that allows you to create a hook_menu() link to a new node edit form using a Reading Node as a menu argument -- then you could see the original node's fields easily for cloning.


  And, how do I go about cloning the pdf file field, such that the pdf file can't be deleted from the server if it is updated, but the old version has already been assigned to someone? (e.g.- I'd like to use the updated PDF for any new assignments created, but keep the old one around for old assignments).


In D7 the file_managed FAPI element allows you to set an "owner" module for the FID, I believe only that module may deem the file as 'deleted'. So using a custom FAPI override you could specify a module you control as the enforcer for this ruling. The D7 file_entity module is seeking to add views to track individual file usage of FIDs i'm not sure if it's ready for prime time usage.