Inconsistent Cost of Goods in Shipment lines. Some are 0 some are correct

Correct, you can use the shipped_after/before filters as well as the sort=ship_date or sort=-ship_date param.

So if an order shipped in Say december and then again in january will it showup with a shipped_after of January?

The V3 API doesn’t allow multiple shipments per order. This is part of a bigger plan to move away from the shipments model and the reason the /shipment endpoint is unlisted and why /v3/shipment endpoints are going away. When an order is unshipped (or the label deleted), the shipped date gets cleared. If it is then shipped again the new date would be populated.

So yes, the order would only be discoverable when using the shipped_after/before filters by its most recent ship date.

Hope that helps