I have large background sprite which is moving from right to left. What is more efficient? To create new sprite when old finish its action or to move it to its start position and run action again?
Move the old one.
If you create a new sprite your application needs to (most likely) free the old sprite and then allocate a new one which is a relatively costly operation.