How to create a custom page(not a template) in a theme

No you can’t link directly to a template file.

What you can do is either:

  1. Create a custom page template with your markup and content hardcoded into it. Then create a ‘dummy’ page in the back-end and assign the template to it. Then you can link to that page from the menu.
  2. Also create a ‘dummy’ page in the back-end, but instead of a custom template, create a page-{slug}.php template (where {$slug} is the slug of the page) with your markup and content hardcoded into it. Then when you view that page the page-{slug}.php will be used instead of page.php. Then you can link to that page from the menu.