Well,
when you confirm a production order, mrp.production create a picking (internal shipment) with raw materials from production.location_src_id (source_location_id) to (if not destination_location_id: destination_location_id = source_location_id).
If your bom or your production order has no routing_id or your routing_id has no location_id, is supposed that you produce at the location where the finished products are needed.
At the same time, confirm create also consume moves with raw materials from source_location_id to product_id.property_stock_production and also produce move with finished goods from product_id.property_stock_production to destination_location_id, without picking and state waiting.
When you produce, consume moves and/or produce moves previous created are processed.
Hope this help,
Filsys