Why is a custom post type’s URL “/?cposts=name-of-the-post” but default post’s URL is “/?p=ID”?

For normal posts you can set the permalink structure on Settings → Permalinks.
All details can be found in the Codex

For custom post types you can set the slug when you registering it:

add_action( 'init', 'create_posttype' );
function create_posttype() {
  register_post_type( 'cpost',
    array(
      'labels' => array(
        'name' => __( 'cpost' ),
        'singular_name' => __( 'cpost' )
      ),
      'public' => true,
      'has_archive' => true,
      'rewrite'         => array(
          'slug'      => 'cpost',
          'with_front'  => true
        ),
    )
  );
}

Hope that helps,
Cheers