I don't see any problems with your code, other than that you may not want to have Destroy(gameObject, lifespan) in Start instead of Update
Some simple troubleshooting to help you along:
- If there are compile errors in any of your scripts, Unity may revert to an older version until the bugs are fixed (the version where they don't disappear).
- Make sure your scripts are attached to a parent of the renderer
- Make sure that you have a collider attached to the GameObject with the scripts on it.
- Make sure the objects you want it to collide with have colliders