Я попробую дать ответ на вопрос, но он будет довольно поверхностным, т.к. маркетинг - не моя вотчина... Наверняка здесь найдутся более компетентные люди.

1) "Как сделать"... Юридически - это должно быть прописано в договоре, и никаких проблем. Как контролировать? Прямо скажу - не знаю... Для программиста-одиночки или небольшой фирмы проконтролировать своего заказчика очень и очень непросто...
Технически это каким-либо образом отслеживать - тоже практически нереально. Самому пересобирать программу с какими-то уникальными, хитрыми метками для каждой копии и выдавать порциями заказчику? Тогда можно, по крайней мере, доказать, что заказчик нарушил договор, если где-то всплывут две копии с одной меткой. Но кто за этим следить будет?
Разве только продукт идет с HASP-ключами, и самому пересобирать программу под каждый ключ, либо самому резать болванки со StarForce etc.
Объективно, лучший способ - просто прописать в договоре и положиться на честность заказчика. Если не козлы, то в любом случае какое-то время какие-то суммы они будут платить, может, и не все, но хоть что-то...
"И нужно ли это делать?"
Кто ж его знает... Вам судить. Возможно, лучше предложить заказчику отдать продукт в полную его собственность с исходниками, единовременно взяв большую сумму?

2) Стоимость работ, в примтивном варианте, расчитывается просто. Количество человеко-часов на проект, помноженное на стоимость одного человека-часа.
Обычно стоимость одного человека-часа - это зарплата программиста в час + ~15% комиссии на "управляющий персонал" и "орг. расходы" вашей фирмы. Вот эти 15% - это и есть собственно прибыль фирмы.

Это все в очень простом варианте, повторюсь - я не специалист в этой области, просто выссказал то, что знаю.