There are two, unofficially divided, types of shipping methods:
Static, where the shipping cost rates are based on a predefined set of rules. For example, you can create a shipping method called 5+ and make it available to the customer for selection under the checkout only if they added more than five products to the cart.
Dynamic, where retrieval of shipping cost rates comes from various shipping providers. For example, you have a web service called ABC Shipping that exposes a SOAP web service API which accepts products weight, length, height, width, shipping address, and returns the calculated shipping cost that you can then show to your customer.
Experienced developers would probably expect one or more PHP interfaces to handle the implementation of new shipping methods. The same goes for Magento, implementing a new shipping method is done via an interface and via proper configuration.