Have a look
here.
In general these are the things you need:
1) a 3d model of the vessel, which you need to convert to Orbiter's .msh format. This will be the visual representation of your ship in Orbiter.
Many developers use anim8or or Blender (both of which are free), for modeling and a UV mapper for texturing.
after the mesh, there are several paths you can take:
2a) create a simple config file that lists your ship's configuration (mass, fuel, engines' thrust and ISP, docking ports, touchdown points, cross-sections, principal moments of inertia, etc).
This is the simplest way to create a ship for Orbiter, but also quite limited in the features you can add. (i.e: no animations, no panels or a working virtual cockpit).
Have a look at Doc\OrbiterConfig.pdf, page 20 "Vessel configuration files" for more info on this.
-Upside: no coding required.
-Downside: Limited features.
2b) Use the Spacecraft3 platform to create your vessel. In this case you define your vessel's characteristics in an .ini file, that supports more features that the previous .cfg file.
This includes animations, an extended aerodynamic model, landing gear parameters, basic virtual cockpit etc.
-Upside: medium-fast, no coding required.
-Downside: Somewhat limited features compared to what you can do with C++.
2c) Create a specific dynamic link library (.dll) file your ship, using C++.
If you choose this way, the only things that limit you are your coding skills and Orbiter's (extensive) API.
These are just
some of the ways that you can create a vessel for Orbiter, I'm pretty sure that fellow Orbinauts will point out a few more.