There’s many ways to implement a search form. This is merely one suggestion. Create a function that outputs search form content. It’s declaration can go in child functions.php.
Check you parent theme’s template code for any possible hooks you might be able to use to be able to call your form function. There’s unlikely to be a do_action()
call right on a template, but check the source code for functions called near where you want your form to appear.
If no hooks are apparent, you’ll need to modify templates. Copy the template from where the output should occur to the child and insert your form’s function call. This is typically either header.php or sidebar.php, but is theme dependent, YMMV.
You can have your form submit to a custom search results page. Or let the default “s” query var for the search term remain and modify the default query through the “pre_get_posts” action. Unless the form is really simple, I’d use a custom results page.
For a custom page, either create a custom page template or submit through /wp-admin/admin-post.php, in which case the results output is managed through a specific action hook. The hook is in part composed from a hidden field in your form named “action”. This is similar to how WP Ajax works, except no JS is involved.
The page code validates and sanitizes form data. There should also be a nonce submitted as a hidden field that is validated now. Use the data to compose a custom WP_Query and loop through the results in the usual manner. You cannot use the usual pagination functions with custom queries. You should use paginate_links() instead of what your theme normally uses.