You can create a template file that meets your needs. Then hook the ‘template_include’ filter and check the global $wp_query for the “s” query var having any value and the “cat” query var equal to 1. If so, return the path to your template. Your template will then be used to display the results, provided it runs the “Loop”.
Another approach, which you may have had in mind to begin with, is to create a custom page template. If the page is requested via GET, display a search form. The form method is set to POST. If the page is requested via POST, that means a search has been requested. The search term is used to construct a query along with ‘cat=1’. The DB is queried and the results displayed via the “Loop”.
Then simply add a new page based on this template. Provide a title and publish the page. No content is needed unless the template is designed to make use of such data. Then anyone that wants to use this search form uses the page’s permalink to access the form.